[INFO] fetching crate claudette 0.7.0...
[INFO] testing claudette-0.7.0 against try#28f95933dc0727396c07b48d0a8cb5211b7fb472 for pr-154065-2
[INFO] extracting crate claudette 0.7.0 into /workspace/builds/worker-5-tc2/source
[INFO] started tweaking crates.io crate claudette 0.7.0
[INFO] removed 0 missing examples
[INFO] finished tweaking crates.io crate claudette 0.7.0
[INFO] tweaked toml for crates.io crate claudette 0.7.0 written to /workspace/builds/worker-5-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate claudette 0.7.0 on toolchain 28f95933dc0727396c07b48d0a8cb5211b7fb472
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate claudette 0.7.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-5-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] aa59e56f3fff8a886462f59b502e8ba1fe48258d639051cff29adb737e1d70c7
[INFO] running `Command { std: "docker" "start" "aa59e56f3fff8a886462f59b502e8ba1fe48258d639051cff29adb737e1d70c7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "aa59e56f3fff8a886462f59b502e8ba1fe48258d639051cff29adb737e1d70c7" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "aa59e56f3fff8a886462f59b502e8ba1fe48258d639051cff29adb737e1d70c7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "aa59e56f3fff8a886462f59b502e8ba1fe48258d639051cff29adb737e1d70c7" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.185
[INFO] [stderr]    Compiling bitflags v2.11.1
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling stable_deref_trait v1.2.1
[INFO] [stderr]    Compiling log v0.4.29
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling cc v1.2.60
[INFO] [stderr]    Compiling pin-project-lite v0.2.17
[INFO] [stderr]    Compiling bytes v1.11.1
[INFO] [stderr]    Compiling futures-core v0.3.32
[INFO] [stderr]    Compiling unicode-segmentation v1.13.2
[INFO] [stderr]    Compiling allocator-api2 v0.2.21
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling once_cell v1.21.4
[INFO] [stderr]    Compiling writeable v0.6.3
[INFO] [stderr]    Compiling litemap v0.8.2
[INFO] [stderr]    Compiling futures-sink v0.3.32
[INFO] [stderr]    Compiling rustix v1.1.4
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling ident_case v1.0.1
[INFO] [stderr]    Compiling zeroize v1.8.2
[INFO] [stderr]    Compiling http v1.4.0
[INFO] [stderr]    Compiling percent-encoding v2.3.2
[INFO] [stderr]    Compiling strsim v0.11.1
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling ryu v1.0.23
[INFO] [stderr]    Compiling memchr v2.8.0
[INFO] [stderr]    Compiling icu_normalizer_data v2.2.0
[INFO] [stderr]    Compiling icu_properties_data v2.2.0
[INFO] [stderr]    Compiling linux-raw-sys v0.12.1
[INFO] [stderr]    Compiling mio v1.2.0
[INFO] [stderr]    Compiling socket2 v0.6.3
[INFO] [stderr]    Compiling getrandom v0.2.17
[INFO] [stderr]    Compiling http-body v1.0.1
[INFO] [stderr]    Compiling errno v0.3.14
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling tokio v1.52.1
[INFO] [stderr]    Compiling rustls-pki-types v1.14.0
[INFO] [stderr]    Compiling futures-io v0.3.32
[INFO] [stderr]    Compiling scopeguard v1.2.0
[INFO] [stderr]    Compiling siphasher v1.0.3
[INFO] [stderr]    Compiling simd-adler32 v0.3.9
[INFO] [stderr]    Compiling slab v0.4.12
[INFO] [stderr]    Compiling signal-hook v0.3.18
[INFO] [stderr]    Compiling heck v0.5.0
[INFO] [stderr]    Compiling futures-task v0.3.32
[INFO] [stderr]    Compiling lock_api v0.4.14
[INFO] [stderr]    Compiling futures-util v0.3.32
[INFO] [stderr]    Compiling itertools v0.14.0
[INFO] [stderr]    Compiling castaway v0.2.4
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling signal-hook-registry v1.4.8
[INFO] [stderr]    Compiling convert_case v0.10.0
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling instability v0.3.12
[INFO] [stderr]    Compiling unicode-width v0.2.0
[INFO] [stderr]    Compiling static_assertions v1.1.0
[INFO] [stderr]    Compiling indoc v2.0.7
[INFO] [stderr]    Compiling rustls v0.23.38
[INFO] [stderr]    Compiling compact_str v0.9.0
[INFO] [stderr]    Compiling miniz_oxide v0.8.9
[INFO] [stderr]    Compiling rand v0.8.6
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling darling_core v0.23.0
[INFO] [stderr]    Compiling unicode-truncate v2.0.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling phf_shared v0.11.3
[INFO] [stderr]    Compiling lru v0.16.4
[INFO] [stderr]    Compiling futures-channel v0.3.32
[INFO] [stderr]    Compiling tracing-core v0.1.36
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling subtle v2.6.1
[INFO] [stderr]    Compiling atomic-waker v1.1.2
[INFO] [stderr]    Compiling powerfmt v0.2.0
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling strum_macros v0.27.2
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling rustls-webpki v0.103.13
[INFO] [stderr]    Compiling zerofrom v0.1.7
[INFO] [stderr]    Compiling yoke v0.8.2
[INFO] [stderr]    Compiling zerovec v0.11.6
[INFO] [stderr]    Compiling zerotrie v0.2.4
[INFO] [stderr]    Compiling tinystr v0.8.3
[INFO] [stderr]    Compiling potential_utf v0.1.5
[INFO] [stderr]    Compiling icu_locale_core v2.2.0
[INFO] [stderr]    Compiling icu_collections v2.2.0
[INFO] [stderr]    Compiling derive_more-impl v2.1.1
[INFO] [stderr]    Compiling kasuari v0.4.12
[INFO] [stderr]    Compiling darling_macro v0.23.0
[INFO] [stderr]    Compiling darling v0.23.0
[INFO] [stderr]    Compiling unicase v2.9.0
[INFO] [stderr]    Compiling mime_guess v2.0.5
[INFO] [stderr]    Compiling hyper v1.9.0
[INFO] [stderr]    Compiling derive_more v2.1.1
[INFO] [stderr]    Compiling deranged v0.5.8
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling icu_provider v2.2.0
[INFO] [stderr]    Compiling libsqlite3-sys v0.37.0
[INFO] [stderr]    Compiling tracing v0.1.44
[INFO] [stderr]    Compiling phf_generator v0.11.3
[INFO] [stderr]    Compiling strum v0.27.2
[INFO] [stderr]    Compiling icu_normalizer v2.2.0
[INFO] [stderr]    Compiling icu_properties v2.2.0
[INFO] [stderr]    Compiling ratatui-core v0.1.0
[INFO] [stderr]    Compiling flate2 v1.1.9
[INFO] [stderr]    Compiling signal-hook-mio v0.2.5
[INFO] [stderr]    Compiling fdeflate v0.3.7
[INFO] [stderr]    Compiling form_urlencoded v1.2.2
[INFO] [stderr]    Compiling sync_wrapper v1.0.2
[INFO] [stderr]    Compiling base64 v0.22.1
[INFO] [stderr]    Compiling time-core v0.1.8
[INFO] [stderr]    Compiling num-conv v0.2.1
[INFO] [stderr]    Compiling ipnet v2.12.0
[INFO] [stderr]    Compiling pxfm v0.1.29
[INFO] [stderr]    Compiling num_threads v0.1.7
[INFO] [stderr]    Compiling tower-layer v0.3.3
[INFO] [stderr]    Compiling time v0.3.47
[INFO] [stderr]    Compiling tower v0.5.3
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling hyper-util v0.1.20
[INFO] [stderr]    Compiling png v0.18.1
[INFO] [stderr]    Compiling crossterm v0.29.0
[INFO] [stderr]    Compiling phf_macros v0.11.3
[INFO] [stderr]    Compiling gethostname v1.1.0
[INFO] [stderr]    Compiling webpki-roots v1.0.7
[INFO] [stderr]    Compiling line-clipping v0.3.7
[INFO] [stderr]    Compiling winnow v1.0.2
[INFO] [stderr]    Compiling bytemuck v1.25.0
[INFO] [stderr]    Compiling tokio-rustls v0.26.4
[INFO] [stderr]    Compiling x11rb-protocol v0.13.2
[INFO] [stderr]    Compiling iri-string v0.7.12
[INFO] [stderr]    Compiling hyper-rustls v0.27.9
[INFO] [stderr]    Compiling toml_parser v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling chrono v0.4.44
[INFO] [stderr]    Compiling anyhow v1.0.102
[INFO] [stderr]    Compiling phf v0.11.3
[INFO] [stderr]    Compiling moxcms v0.8.1
[INFO] [stderr]    Compiling ratatui-widgets v0.3.0
[INFO] [stderr]    Compiling tower-http v0.6.8
[INFO] [stderr]    Compiling ratatui-crossterm v0.1.0
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling url v2.5.8
[INFO] [stderr]    Compiling http-body-util v0.1.3
[INFO] [stderr]    Compiling hashlink v0.11.0
[INFO] [stderr]    Compiling toml_datetime v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling serde_spanned v1.1.1
[INFO] [stderr]    Compiling fallible-streaming-iterator v0.1.9
[INFO] [stderr]    Compiling winnow v0.7.15
[INFO] [stderr]    Compiling fallible-iterator v0.3.0
[INFO] [stderr]    Compiling toml_writer v1.1.1+spec-1.1.0
[INFO] [stderr]    Compiling reqwest v0.12.28
[INFO] [stderr]    Compiling toml v1.1.2+spec-1.1.0
[INFO] [stderr]    Compiling ratatui v0.30.0
[INFO] [stderr]    Compiling x11rb v0.13.2
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling colored v3.1.1
[INFO] [stderr]    Compiling dotenvy v0.15.7
[INFO] [stderr]    Compiling glob v0.3.3
[INFO] [stderr]    Compiling image v0.25.10
[INFO] [stderr]    Compiling cron v0.16.0
[INFO] [stderr]    Compiling arboard v3.6.1
[INFO] [stderr]    Compiling rusqlite v0.39.0
[INFO] [stderr]    Compiling claudette v0.7.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 3m 12s
[INFO] running `Command { std: "docker" "inspect" "aa59e56f3fff8a886462f59b502e8ba1fe48258d639051cff29adb737e1d70c7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "aa59e56f3fff8a886462f59b502e8ba1fe48258d639051cff29adb737e1d70c7" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr]    Compiling claudette v0.7.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 32.45s
[INFO] running `Command { std: "docker" "inspect" "aa59e56f3fff8a886462f59b502e8ba1fe48258d639051cff29adb737e1d70c7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "aa59e56f3fff8a886462f59b502e8ba1fe48258d639051cff29adb737e1d70c7" "/opt/rustwide/cargo-home/bin/cargo" "+28f95933dc0727396c07b48d0a8cb5211b7fb472" "test" "--frozen", kill_on_drop: false }`
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.43s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/claudette-4e24b472aa75b43a)
[INFO] [stdout] 
[INFO] [stdout] running 1013 tests
[INFO] [stdout] test agents::tests::agent_type_from_str_researcher ... ok
[INFO] [stdout] test agents::tests::agent_type_from_str_unknown ... ok
[INFO] [stdout] test agents::tests::agent_type_from_str_code_reviewer ... ok
[INFO] [stdout] test agents::tests::auto_mode_policy_allows_everything ... ok
[INFO] [stdout] test agents::tests::agent_type_from_str_gitops ... ok
[INFO] [stdout] test agents::tests::extract_final_text_from_empty_summary ... ok
[INFO] [stdout] test agents::tests::filtered_executor_rejects_disallowed_tool ... ok
[INFO] [stdout] test agents::tests::filtered_executor_passes_allowed_tool ... ok
[INFO] [stdout] test agents::tests::agent_type_display ... ok
[INFO] [stdout] test agents::tests::filter_tools_json_keeps_allowed_only ... ok
[INFO] [stdout] test agents::tests::normal_mode_policy_read_only_auto_allowed ... ok
[INFO] [stdout] test agents::tests::researcher_default_max_iter ... ok
[INFO] [stdout] test antipatterns::tests::active_rules_path_honors_env ... ok
[INFO] [stdout] test antipatterns::tests::cluster_label_is_deterministic_on_ties ... ok
[INFO] [stdout] test antipatterns::tests::cluster_label_uses_most_common_tokens ... ok
[INFO] [stdout] test antipatterns::tests::clustering_groups_similar_feedback ... ok
[INFO] [stdout] test antipatterns::tests::clustering_is_order_stable_anchor_at_first_occurrence ... ok
[INFO] [stdout] test antipatterns::tests::configured_threshold_clamps_negative ... ok
[INFO] [stdout] test agents::tests::filter_tools_json_empty_allowed_returns_empty ... ok
[INFO] [stdout] test antipatterns::tests::configured_threshold_defaults_when_unset ... ok
[INFO] [stdout] test antipatterns::tests::configured_threshold_clamps_to_unit_interval ... ok
[INFO] [stdout] test antipatterns::tests::configured_threshold_honors_env ... ok
[INFO] [stdout] test antipatterns::tests::failure_record_round_trips_through_json ... ok
[INFO] [stdout] test antipatterns::tests::failures_dir_honors_env ... ok
[INFO] [stdout] test antipatterns::tests::graduation_candidates_filter_by_min_count ... ok
[INFO] [stdout] test antipatterns::tests::graduation_candidates_kept_when_any_member_ungraduated ... ok
[INFO] [stdout] test antipatterns::tests::graduation_candidates_skip_already_graduated_clusters ... ok
[INFO] [stdout] test agents::tests::gitops_config_has_correct_tools ... ok
[INFO] [stdout] test agents::tests::code_reviewer_config_has_correct_tools ... ok
[INFO] [stdout] test antipatterns::tests::jaccard_empty_inputs_return_zero ... ok
[INFO] [stdout] test antipatterns::tests::jaccard_disjoint_strings_zero ... ok
[INFO] [stdout] test antipatterns::tests::jaccard_identical_strings_match ... ok
[INFO] [stdout] test agents::tests::gitops_default_max_iter ... ok
[INFO] [stdout] test agents::tests::gitops_config_has_brownfield_tools ... ok
[INFO] [stdout] test agents::tests::code_reviewer_default_max_iter ... ok
[INFO] [stdout] test antipatterns::tests::rules_overlay_lists_each_rule_as_bullet ... ok
[INFO] [stdout] test agents::tests::researcher_config_has_correct_tools ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_handles_marker_at_start_of_line ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_leaves_html_tags_alone ... ok
[INFO] [stdout] test antipatterns::tests::jaccard_ignores_short_tokens ... ok
[INFO] [stdout] test antipatterns::tests::jaccard_partial_overlap_between_zero_and_one ... ok
[INFO] [stdout] test antipatterns::tests::rule_round_trips_through_toml ... ok
[INFO] [stdout] test antipatterns::tests::rules_overlay_empty_when_no_rules ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_handles_underscored_names ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_leaves_plain_angle_brackets_alone ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_no_op_on_clean_text ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_preserves_multibyte_utf8 ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_preserves_fenced_code ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_removes_qwen36_channel_pair ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_removes_symmetric_markers ... ok
[INFO] [stdout] test api::harmony::tests::strip_harmony_unbalanced_marker_with_uppercase_is_left_alone ... ok
[INFO] [stdout] test api::tests::build_messages_truncates_history_under_budget ... ok
[INFO] [stdout] test api::tests::cap_tools_keeps_enable_tools_at_front_when_already_first ... ok
[INFO] [stdout] test api::tests::cap_tools_passes_through_non_array ... ok
[INFO] [stdout] test api::tests::cap_tools_passthrough_when_under_cap ... ok
[INFO] [stdout] test api::tests::build_messages_always_keeps_system_prompt_and_newest ... ok
[INFO] [stdout] test api::tests::cap_tools_no_enable_tools_just_takes_first_n ... ok
[INFO] [stdout] test api::tests::cap_tools_moves_enable_tools_to_front_when_present ... ok
[INFO] [stdout] test api::tests::build_chat_body_compat_uses_openai_shape ... ok
[INFO] [stdout] test api::tests::estimate_message_chars_counts_content_and_tool_calls ... ok
[INFO] [stdout] test api::tests::build_chat_body_default_stays_ollama_shape ... ok
[INFO] [stdout] test api::tests::build_chat_body_compat_uses_openai_history_shape ... ok
[INFO] [stdout] test api::tests::cap_tools_truncates_when_over_cap ... ok
[INFO] [stdout] test api::tests::is_compat_value_truthy_returns_false_for_zero ... ok
[INFO] [stdout] test api::tests::is_compat_value_truthy_returns_false_for_empty ... ok
[INFO] [stdout] test api::tests::is_compat_value_truthy_returns_false_for_unset ... ok
[INFO] [stdout] test api::tests::history_budget_shrinks_with_larger_system_prompt ... ok
[INFO] [stdout] test api::tests::is_compat_value_truthy_returns_true_for_one ... ok
[INFO] [stdout] test api::tests::is_compat_value_truthy_treats_other_strings_as_truthy ... ok
[INFO] [stdout] test api::tests::is_local_ollama_url_recognises_loopback ... ok
[INFO] [stdout] test api::tests::is_local_ollama_url_rejects_remote ... ok
[INFO] [stdout] test api::tests::lm_studio_data_with_loaded_model_returns_false ... ok
[INFO] [stdout] test api::tests::lm_studio_invalid_json_returns_false ... ok
[INFO] [stdout] test api::tests::lm_studio_data_empty_array_returns_true ... ok
[INFO] [stdout] test api::tests::lm_studio_missing_data_field_returns_false ... ok
[INFO] [stdout] test api::tests::lm_studio_data_not_an_array_returns_false ... ok
[INFO] [stdout] test api::tests::openai_history_assistant_with_text_and_tool_calls_keeps_both ... ok
[INFO] [stdout] test api::tests::model_reload_transient_rejects_non_400 ... ok
[INFO] [stdout] test api::tests::openai_history_emits_separate_tool_messages_with_tool_call_id ... ok
[INFO] [stdout] test api::tests::model_reload_transient_rejects_genuine_400_bodies ... ok
[INFO] [stdout] test api::tests::openai_history_plain_text_message_unchanged ... ok
[INFO] [stdout] test api::tests::openai_history_multiple_tool_results_in_one_message_become_separate ... ok
[INFO] [stdout] test api::tests::parse_openai_response_callback_fires_with_full_text ... ok
[INFO] [stdout] test api::tests::parse_openai_response_error_field_returns_err ... ok
[INFO] [stdout] test api::tests::parse_openai_response_missing_choices_is_err ... ok
[INFO] [stdout] test api::tests::cap_tools_preserves_enable_tools_even_when_cap_is_one ... ok
[INFO] [stdout] test api::tests::parse_openai_response_missing_id_synthesises_one ... ok
[INFO] [stdout] test api::tests::parse_openai_response_with_tool_calls ... ok
[INFO] [stdout] test api::tests::probe_ollama_skip_env_short_circuits ... ok
[INFO] [stdout] test api::tests::resolve_max_tools_unset_returns_none ... ok
[INFO] [stdout] test api::tests::resolve_max_tools_garbage_returns_none ... ok
[INFO] [stdout] test api::tests::model_reload_transient_matches_lm_studio_400 ... ok
[INFO] [stdout] test api::tests::parse_openai_response_text_only ... ok
[INFO] [stdout] test api::tests::parse_openai_response_text_then_tool_call ... ok
[INFO] [stdout] test api::tests::stream_empty_returns_only_usage_and_stop ... ok
[INFO] [stdout] test api::tests::stream_callback_no_trailing_newline_when_only_tool_call ... ok
[INFO] [stdout] test api::tests::resolve_max_tools_zero_is_treated_as_no_cap ... ok
[INFO] [stdout] test api::tests::stream_missing_id_synthesises_one ... ok
[INFO] [stdout] test api::tests::stream_skips_blank_lines ... ok
[INFO] [stdout] test api::tests::stream_error_chunk_returns_error ... ok
[INFO] [stdout] test api::tests::stream_text_only_single_chunk ... ok
[INFO] [stdout] test api::tests::truncate_drops_oldest_first ... ok
[INFO] [stdout] test api::tests::dynamic_registry_budget_shrinks_when_group_is_enabled ... ok
[INFO] [stdout] test api::tests::stream_callback_fires_per_delta_and_trailing_newline ... ok
[INFO] [stdout] test api::tests::truncate_drops_orphan_assistant_when_tool_skipped_ollama_shape ... ok
[INFO] [stdout] test api::tests::stream_tool_call_on_done_chunk ... ok
[INFO] [stdout] test api::tests::truncate_drops_orphan_assistant_when_tool_skipped_openai_shape ... ok
[INFO] [stdout] test api::tests::stream_text_then_tool_call ... ok
[INFO] [stdout] test api::tests::stream_text_accumulates_multiple_deltas ... ok
[INFO] [stdout] test api::tests::truncate_keeps_everything_when_under_budget ... ok
[INFO] [stdout] test api::tests::truncate_empty_input_returns_empty ... ok
[INFO] [stdout] test api::tests::truncate_pins_assistant_tool_calls_when_keeping_tool_ollama_shape ... ok
[INFO] [stdout] test api::tests::truncate_pins_assistant_tool_calls_when_keeping_tool_openai_shape ... ok
[INFO] [stdout] test api::tests::truncate_pins_user_query_under_giant_tool_result_ollama_shape ... ok
[INFO] [stdout] test api::tests::truncate_keeps_oversized_newest_alone ... ok
[INFO] [stdout] test api::tests::truncate_pins_user_query_under_giant_tool_result_openai_shape ... ok
[INFO] [stdout] test api::tests::truncate_skips_oversized_older_keeps_smaller_oldest ... ok
[INFO] [stdout] test api::tests::truncate_zero_budget_still_keeps_newest ... ok
[INFO] [stdout] test bench::ab::tests::axis_parse_rejects_unknown ... ok
[INFO] [stdout] test bench::ab::tests::axis_parse_accepts_variant_spellings ... ok
[INFO] [stdout] test bench::ab::tests::report_aggregates_score_deltas ... ok
[INFO] [stdout] test bench::swebench::tests::outcome_round_trips_through_json ... ok
[INFO] [stdout] test bench::ab::tests::report_winner_handles_tie_and_loss ... ok
[INFO] [stdout] test bench::swebench::tests::parse_jsonl_errors_on_bad_line_with_index ... ok
[INFO] [stdout] test bench::ab::tests::report_round_trips_through_json ... ok
[INFO] [stdout] test bench::swebench::tests::parse_jsonl_reads_multiple_issues ... ok
[INFO] [stdout] test bench::swebench::tests::parse_jsonl_skips_blank_lines ... ok
[INFO] [stdout] test bench::swebench::tests::summarize_reports_pass_rate_and_median ... ok
[INFO] [stdout] test bench::templates::tests::by_name_returns_none_for_unknown ... ok
[INFO] [stdout] test bench::templates::tests::by_name_finds_known_template ... ok
[INFO] [stdout] test bench::templates::tests::every_template_has_unique_name ... ok
[INFO] [stdout] test bench::templates::tests::families_partition_the_corpus ... ok
[INFO] [stdout] test bench::templates::tests::ten_templates_bundled ... ok
[INFO] [stdout] test bench::templates::tests::every_template_has_a_non_empty_mission_and_validation ... ok
[INFO] [stdout] test bench::swebench::tests::summarize_handles_empty_vec ... ok
[INFO] [stdout] test bench::tests::bench_result_errored_sentinel_has_failure_category ... ok
[INFO] [stdout] test bench::swebench::tests::take_returns_first_n_issues ... ok
[INFO] [stdout] test bench::tests::ab_comparison_summary_includes_template_and_deltas ... ok
[INFO] [stdout] test bench::tests::ab_comparison_computes_negative_deltas ... ok
[INFO] [stdout] test bench::tests::bench_runs_dir_honors_env_var ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_empty_response_from_err_message ... ok
[INFO] [stdout] test bench::tests::bench_result_round_trips_through_json ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_empty_text_at_max_iter_escalates ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_empty_text_under_threshold_does_not_escalate ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_interleaved_errors_resets_streak ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_three_consecutive_tool_errors_escalates ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_text_response_passes_through ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_two_errors_then_success_does_not_escalate ... ok
[INFO] [stdout] test brain_selector::tests::escape_json_handles_specials ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_whitespace_only_text_counts_as_no_text ... ok
[INFO] [stdout] test brain_selector::tests::prompt_hash_differs_for_different_inputs ... ok
[INFO] [stdout] test brain_selector::tests::should_swap_for_coder_returns_false_for_same_model ... ok
[INFO] [stdout] test brain_selector::tests::should_swap_for_coder_is_case_sensitive ... ok
[INFO] [stdout] test brain_selector::tests::prompt_hash_is_stable_for_same_input ... ok
[INFO] [stdout] test brain_selector::tests::should_swap_for_coder_returns_true_for_different_models ... ok
[INFO] [stdout] test clock::tests::clock_is_object_safe ... ok
[INFO] [stdout] test clock::tests::mock_clock_advance_accepts_negative_delta ... ok
[INFO] [stdout] test clock::tests::mock_clock_is_send_sync ... ok
[INFO] [stdout] test clock::tests::mock_clock_set_jumps_to_instant ... ok
[INFO] [stdout] test clock::tests::mock_clock_starts_at_given_instant ... ok
[INFO] [stdout] test codet::tests::apply_fails_on_non_unique_search ... ok
[INFO] [stdout] test clock::tests::system_clock_returns_recent_time ... ok
[INFO] [stdout] test codet::tests::apply_fails_when_search_missing ... ok
[INFO] [stdout] test codet::tests::apply_fuzzy_match_tolerates_trailing_whitespace ... ok
[INFO] [stdout] test codet::tests::apply_single_patch_replaces_exact_match ... ok
[INFO] [stdout] test codet::tests::apply_multiple_patches_sequential ... ok
[INFO] [stdout] test bench::ab::tests::axis_parse_accepts_canonical_names ... ok
[INFO] [stdout] test codet::tests::codet_result_to_json_contains_all_fields ... ok
[INFO] [stdout] test bench::tests::ab_comparison_computes_positive_score_delta ... ok
[INFO] [stdout] test codet::tests::count_failures_from_error_counts_fail_and_error_lines ... ok
[INFO] [stdout] test codet::tests::count_failures_from_error_returns_zero_for_empty ... ok
[INFO] [stdout] test codet::tests::count_failures_from_error_returns_one_for_unknown_errors ... ok
[INFO] [stdout] test brain_selector::tests::diagnose_transport_error_does_not_escalate ... ok
[INFO] [stdout] test clock::tests::mock_clock_advance_moves_forward ... ok
[INFO] [stdout] test codet::tests::fixes_real_syntax_break_from_md2html ... ok
[INFO] [stdout] test codet::tests::parse_multiline_replacement ... ok
[INFO] [stdout] test codet::tests::parse_rejects_missing_closing_mark ... ok
[INFO] [stdout] test codet::tests::parse_multiple_blocks ... ok
[INFO] [stdout] test codet::tests::parse_single_search_replace_block ... ok
[INFO] [stdout] test codet::tests::parse_rejects_missing_separator ... ok
[INFO] [stdout] test codet::tests::strip_code_blocks_extracts_from_text_before_and_after ... ok
[INFO] [stdout] test codet::tests::parse_tolerates_surrounding_prose ... ok
[INFO] [stdout] test codet::tests::strip_code_blocks_extracts_from_text_before_fence ... ok
[INFO] [stdout] test codet::tests::strip_code_blocks_fenced_code_with_internal_backticks ... ok
[INFO] [stdout] test codet::tests::strip_code_blocks_handles_trailing_whitespace ... ok
[INFO] [stdout] test codet::tests::strip_code_blocks_multi_block_takes_first ... ok
[INFO] [stdout] test codet::tests::validation_skips_non_code_files ... ok
[INFO] [stdout] test codet::tests::validation_skips_unknown_extensions ... ok
[INFO] [stdout] test codet::tests::strip_code_blocks_removes_bare_fence ... ok
[INFO] [stdout] test codet::tests::strip_code_blocks_noop_without_fences ... ok
[INFO] [stdout] test codet::tests::strip_code_blocks_preserves_internal_triple_backticks ... ok
[INFO] [stdout] test commands::tests::first_sentence_falls_back_to_max_chars_for_runaway_text ... ok
[INFO] [stdout] test commands::tests::first_sentence_handles_multibyte_safely ... ok
[INFO] [stdout] test commands::tests::first_sentence_handles_question_and_exclamation ... ok
[INFO] [stdout] test codet::tests::strip_code_blocks_removes_python_fence ... ok
[INFO] [stdout] test commands::tests::first_sentence_takes_up_to_period_space ... ok
[INFO] [stdout] test commands::tests::first_sentence_does_not_split_on_period_inside_path ... ok
[INFO] [stdout] test commands::tests::first_sentence_falls_back_to_whole_string_when_no_boundary ... ok
[INFO] [stdout] test commands::tests::format_bytes_short_covers_each_unit ... ok
[INFO] [stdout] test commands::tests::format_relative_age_buckets_match_user_expectations ... ok
[INFO] [stdout] test commands::tests::handle_sessions_delete_rejects_unknown_session ... ok
[INFO] [stdout] test commands::tests::handle_sessions_rename_noop_when_old_eq_new ... ok
[INFO] [stdout] test commands::tests::handle_sessions_rename_rejects_when_source_missing ... ok
[INFO] [stdout] test commands::tests::parse_brain_with_model_name ... ok
[INFO] [stdout] test commands::tests::parse_brain_without_arg_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_agents ... ok
[INFO] [stdout] test commands::tests::parse_brownfield_with_target ... ok
[INFO] [stdout] test commands::tests::parse_brownfield_without_target_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_clear_aliases ... ok
[INFO] [stdout] test commands::tests::parse_coder_with_model_name ... ok
[INFO] [stdout] test commands::tests::parse_coder_without_arg_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_empty_slash_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_exit_aliases ... ok
[INFO] [stdout] test commands::tests::parse_forge_with_prompt ... ok
[INFO] [stdout] test commands::tests::parse_forge_without_prompt_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_help_aliases ... ok
[INFO] [stdout] test commands::tests::parse_is_case_insensitive ... ok
[INFO] [stdout] test commands::tests::parse_load_with_name ... ok
[INFO] [stdout] test commands::tests::parse_load_without_name_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_mission_exit_aliases ... ok
[INFO] [stdout] test commands::tests::parse_models_alias ... ok
[INFO] [stdout] test commands::tests::parse_preset_variants ... ok
[INFO] [stdout] test commands::tests::parse_preset_with_unknown_arg_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_preset_without_arg_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_recall_reprobe_subcommand ... ok
[INFO] [stdout] test commands::tests::parse_recall_with_query ... ok
[INFO] [stdout] test commands::tests::parse_recall_without_query_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_returns_none_for_non_slash_lines ... ok
[INFO] [stdout] test commands::tests::parse_save_with_name ... ok
[INFO] [stdout] test commands::tests::parse_save_without_name_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_sessions_bare_is_list ... ok
[INFO] [stdout] test commands::tests::parse_sessions_delete_without_name_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_simple_commands ... ok
[INFO] [stdout] test api::tests::history_budget_subtracts_tools_schema ... ok
[INFO] [stdout] test commands::tests::parse_sessions_rename_with_missing_arg_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_unknown_command_is_invalid ... ok
[INFO] [stdout] test commands::tests::parse_sessions_delete_with_name ... ok
[INFO] [stdout] test commands::tests::parse_sessions_rename_with_both_names ... ok
[INFO] [stdout] test commands::tests::parse_validate_with_path ... ok
[INFO] [stdout] test commands::tests::parse_sessions_unknown_subcommand_is_invalid ... ok
[INFO] [stdout] test commands::tests::sanitize_accepts_normal_names ... ok
[INFO] [stdout] test commands::tests::parse_validate_without_path_is_invalid ... ok
[INFO] [stdout] test commands::tests::repl_state_records_turns ... ok
[INFO] [stdout] test commands::tests::sanitize_rejects_empty_and_dotted ... ok
[INFO] [stdout] test commands::tests::sanitize_rejects_oversized_names ... ok
[INFO] [stdout] test commands::tests::sanitize_rejects_path_chars ... ok
[INFO] [stdout] test commands::tests::short_ts_trims_to_date_prefix ... ok
[INFO] [stdout] test compact::tests::evict_older_image_bytes_keeps_single_image_intact ... ok
[INFO] [stdout] test compact::tests::evict_older_image_bytes_passthrough_when_no_images ... ok
[INFO] [stdout] test compact::tests::compacts_older_messages_into_a_system_summary ... ok
[INFO] [stdout] test compact::tests::image_token_estimator_charges_wire_cost_for_real_payloads ... ok
[INFO] [stdout] test compact::tests::image_token_estimator_floors_small_images_at_256 ... ok
[INFO] [stdout] test compact::tests::image_token_estimator_transitions_at_the_floor ... ok
[INFO] [stdout] test compact::tests::extracts_key_files_from_message_content ... ok
[INFO] [stdout] test compact::tests::infers_pending_work_from_recent_messages ... ok
[INFO] [stdout] test compact::tests::truncates_long_blocks_in_summary ... ok
[INFO] [stdout] test compact::tests::evict_older_image_bytes_estimator_drops_after_eviction ... ok
[INFO] [stdout] test compact::tests::evict_older_image_bytes_keeps_only_most_recent_image ... ok
[INFO] [stdout] test config::tests::parses_sandbox_config ... ok
[INFO] [stdout] test compact::tests::formats_compact_summary_like_upstream ... ok
[INFO] [stdout] test conversation::tests::auto_compaction_threshold_defaults_and_parses_values ... ok
[INFO] [stdout] test conversation::tests::auto_compacts_when_cumulative_input_threshold_is_crossed ... ok
[INFO] [stdout] test compact::tests::leaves_small_sessions_unchanged ... ok
[INFO] [stdout] test conversation::tests::build_turn_system_prompt_appends_hint_when_images_present ... ok
[INFO] [stdout] test conversation::tests::build_turn_system_prompt_no_op_when_no_images ... ok
[INFO] [stdout] test conversation::tests::build_turn_system_prompt_preserves_multi_segment_base ... ok
[INFO] [stdout] test config::tests::rejects_non_object_settings_files ... ok
[INFO] [stdout] test config::tests::parses_typed_mcp_and_oauth_config ... ok
[INFO] [stdout] test config::tests::rejects_invalid_mcp_server_shapes ... ok
[INFO] [stdout] test config::tests::loads_and_merges_claude_code_config_files_by_precedence ... ok
[INFO] [stdout] test conversation::tests::reconstructs_usage_tracker_from_restored_session ... ok
[INFO] [stdout] test conversation::tests::compacts_session_after_turns ... ok
[INFO] [stdout] test conversation::tests::records_denied_tool_results_when_prompt_rejects ... ok
[INFO] [stdout] test conversation::tests::runs_user_to_tool_to_result_loop_end_to_end_and_tracks_usage ... ok
[INFO] [stdout] test conversation::tests::unknown_tool_falls_through_to_hinter_when_suggest_for_is_empty ... ok
[INFO] [stdout] test conversation::tests::unknown_tool_short_circuits_without_invoking_prompter_or_executor ... ok
[INFO] [stdout] test conversation::tests::skips_auto_compaction_below_threshold ... ok
[INFO] [stdout] test conversation::tests::unknown_tool_with_no_suggestions_returns_empty_did_you_mean ... ok
[INFO] [stdout] test conversation::tests::vision_discipline_hint_mentions_image ... ok
[INFO] [stdout] test cto::tests::decomposition_prompt_caps_subtask_count ... ok
[INFO] [stdout] test cto::tests::decomposition_prompt_includes_persona_overlay_by_default ... ok
[INFO] [stdout] test cto::tests::decomposition_prompt_includes_subtask_format ... ok
[INFO] [stdout] test cto::tests::decomposition_prompt_skips_persona_under_faceless ... ok
[INFO] [stdout] test cto::tests::decomposition_prompt_with_mission_path_declares_tree ... ok
[INFO] [stdout] test cto::tests::decomposition_prompt_without_mission_omits_path_block ... ok
[INFO] [stdout] test cto::tests::gate_review_prompt_declares_three_input_blocks ... ok
[INFO] [stdout] test cto::tests::gate_review_prompt_demands_json_shape ... ok
[INFO] [stdout] test cto::tests::gate_review_prompt_states_critical_block_rule ... ok
[INFO] [stdout] test cto::tests::cto_persona_bundle_parses ... ok
[INFO] [stdout] test cto::tests::gate_review_prompt_threads_mission_path ... ok
[INFO] [stdout] test doctor::tests::extract_model_names_ollama_shape ... ok
[INFO] [stdout] test doctor::tests::extract_model_names_returns_empty_on_unknown_shape ... ok
[INFO] [stdout] test doctor::tests::model_present_is_case_insensitive ... ok
[INFO] [stdout] test doctor::tests::model_present_matches_latest_alias_either_direction ... ok
[INFO] [stdout] test doctor::tests::model_present_rejects_mismatch ... ok
[INFO] [stdout] test executor::tests::stateless_executor_dispatches_core_tool ... ok
[INFO] [stdout] test doctor::tests::redact_short_secret_is_fully_starred ... ok
[INFO] [stdout] test executor::tests::stateless_executor_rejects_enable_tools ... ok
[INFO] [stdout] test doctor::tests::redact_masks_anything_with_token_or_key_or_secret ... ok
[INFO] [stdout] test doctor::tests::redact_preserves_config_values ... ok
[INFO] [stdout] test doctor::tests::extract_model_names_openai_compat_shape ... ok
[INFO] [stdout] test conversation::tests::denies_tool_use_when_pre_tool_hook_blocks ... ok
[INFO] [stdout] test forge::models_toml::tests::anthropic_provider_parses ... ok
[INFO] [stdout] test forge::models_toml::tests::env_override_model_precedes_toml ... ok
[INFO] [stdout] test forge::models_toml::tests::env_override_works_without_toml_file ... ok
[INFO] [stdout] test executor::tests::wired_executor_reports_already_enabled_on_second_call ... ok
[INFO] [stdout] test executor::tests::wired_executor_still_dispatches_non_meta_tools ... ok
[INFO] [stdout] test executor::tests::wired_executor_enables_git_group ... ok
[INFO] [stdout] test executor::tests::wired_executor_missing_group_param_errors ... ok
[INFO] [stdout] test forge::models_toml::tests::invalid_toml_returns_parse_error ... ok
[INFO] [stdout] test forge::models_toml::tests::missing_file_returns_defaults ... ok
[INFO] [stdout] test forge::models_toml::tests::round_trip_coder_override ... ok
[INFO] [stdout] test forge::models_toml::tests::missing_role_keeps_default ... ok
[INFO] [stdout] test executor::tests::wired_executor_unknown_group_errors_clearly ... ok
[INFO] [stdout] test forge::models_toml::tests::invalid_provider_returns_error ... ok
[INFO] [stdout] test forge::personas::tests::load_personas_user_dir_overrides_bundled ... ok
[INFO] [stdout] test forge::personas::tests::load_personas_missing_bundled_is_err ... ok
[INFO] [stdout] test executor::tests::wired_executor_bad_json_errors ... ok
[INFO] [stdout] test forge::personas::tests::bundled_personas_have_expected_roles ... ok
[INFO] [stdout] test forge::personas::tests::parse_missing_leading_marker_fails ... ok
[INFO] [stdout] test forge::personas::tests::parse_missing_closing_marker_fails ... ok
[INFO] [stdout] test forge::personas::tests::load_personas_walks_directory ... ok
[INFO] [stdout] test forge::personas::tests::bundled_personas_all_parse ... ok
[INFO] [stdout] test forge::personas::tests::parse_role_accepts_case_and_separators ... ok
[INFO] [stdout] test forge::personas::tests::parse_unknown_role_fails ... ok
[INFO] [stdout] test forge::personas::tests::bundled_personas_are_loaded_not_placeholder ... ok
[INFO] [stdout] test conversation::tests::appends_post_tool_hook_feedback_to_tool_result ... ok
[INFO] [stdout] test forge::personas::tests::parse_missing_name_fails ... ok
[INFO] [stdout] test forge::personas::tests::parse_persona_without_examples_section ... ok
[INFO] [stdout] test forge::types::tests::new_map_resolves_nothing ... ok
[INFO] [stdout] test forge::personas::tests::parse_valid_persona_file ... ok
[INFO] [stdout] test forge::personas::tests::parse_persona_file_with_crlf_line_endings ... ok
[INFO] [stdout] test forge::types::tests::set_twice_same_role_last_wins ... ok
[INFO] [stdout] test google_auth::tests::access_token_errors_without_tokens ... ok
[INFO] [stdout] test google_auth::tests::auth_context_parse_accepts_canonical_and_aliases ... ok
[INFO] [stdout] test forge::types::tests::set_then_resolve_round_trips ... ok
[INFO] [stdout] test google_auth::tests::auth_context_scopes_are_distinct ... ok
[INFO] [stdout] test forge::types::tests::multiple_roles_coexist ... ok
[INFO] [stdout] test google_auth::tests::classify_refresh_failure_5xx_says_transient ... ok
[INFO] [stdout] test google_auth::tests::classify_refresh_failure_handles_missing_context ... ok
[INFO] [stdout] test google_auth::tests::classify_refresh_failure_invalid_grant_names_revoke_then_reauth ... ok
[INFO] [stdout] test google_auth::tests::client_path_under_secrets ... ok
[INFO] [stdout] test google_auth::tests::classify_refresh_failure_other_4xx_keeps_structured_error ... ok
[INFO] [stdout] test google_auth::tests::gmail_tokens_path_differs_from_calendar ... ok
[INFO] [stdout] test google_auth::tests::load_client_creds_errors_when_missing ... ok
[INFO] [stdout] test google_auth::tests::tokens_path_under_secrets ... ok
[INFO] [stdout] test google_auth::tests::url_decode_handles_plus_as_space ... ok
[INFO] [stdout] test google_auth::tests::url_decode_keeps_unknown_escapes_literal ... ok
[INFO] [stdout] test google_auth::tests::random_state_changes_between_calls ... ok
[INFO] [stdout] test google_auth::tests::url_decode_roundtrips_space_slash_colon ... ok
[INFO] [stdout] test google_auth::tests::random_state_is_32_hex_chars ... ok
[INFO] [stdout] test google_auth::tests::url_encode_percent_encodes_space_and_slash ... ok
[INFO] [stdout] test google_auth::tests::url_encode_leaves_unreserved ... ok
[INFO] [stdout] test json::tests::escapes_control_characters ... ok
[INFO] [stdout] test json::tests::renders_and_parses_json_values ... ok
[INFO] [stdout] test memory::tests::cap_memory_truncates_on_char_boundary_for_multibyte ... ok
[INFO] [stdout] test memory::tests::cap_memory_under_budget_is_identity ... ok
[INFO] [stdout] test google_auth::tests::random_state_has_spread_across_many_calls ... ok
[INFO] [stdout] test memory::tests::cap_memory_exactly_at_budget_passes_through ... ok
[INFO] [stdout] test memory::tests::missing_file_returns_none ... ok
[INFO] [stdout] test memory::tests::empty_file_returns_none ... ok
[INFO] [stdout] test memory::tests::small_file_loads_verbatim_after_trim ... ok
[INFO] [stdout] test memory::tests::oversize_file_is_truncated_with_marker ... ok
[INFO] [stdout] test missions::tests::active_cwd_falls_back_to_process_cwd_when_no_mission ... ok
[INFO] [stdout] test missions::tests::active_pointer_path_sits_under_claudette_home ... ok
[INFO] [stdout] test missions::tests::add_marker_to_git_exclude_creates_info_dir_if_missing ... ok
[INFO] [stdout] test missions::tests::list_missions_skips_dirs_without_markers ... ok
[INFO] [stdout] test missions::tests::list_orphan_slugs_runs_cleanly ... ok
[INFO] [stdout] test missions::tests::add_marker_to_git_exclude_is_idempotent ... ok
[INFO] [stdout] test missions::tests::marker_filename_is_dotfile ... ok
[INFO] [stdout] test missions::tests::add_marker_to_git_exclude_preserves_existing_rules ... ok
[INFO] [stdout] test missions::tests::brownfield_failed_flag_round_trips ... ok
[INFO] [stdout] test missions::tests::marker_path_for_appends_filename ... ok
[INFO] [stdout] test missions::tests::load_marker_errors_on_missing_file ... ok
[INFO] [stdout] test missions::tests::path_under_permitted_roots_accepts_home_subpath ... ok
[INFO] [stdout] test missions::tests::add_marker_to_git_exclude_writes_into_fresh_repo ... ok
[INFO] [stdout] test missions::tests::path_under_permitted_roots_accepts_workspace_entry ... ok
[INFO] [stdout] test missions::tests::marker_round_trip ... ok
[INFO] [stdout] test missions::tests::missions_root_under_home_or_userprofile ... ok
[INFO] [stdout] test hooks::tests::denies_exit_code_two ... ok
[INFO] [stdout] test missions::tests::rehydrate_returns_none_when_pointer_missing ... ok
[INFO] [stdout] test missions::tests::rehydrate_clears_pointer_when_mission_tree_missing ... ok
[INFO] [stdout] test hooks::tests::warns_for_other_non_zero_statuses ... ok
[INFO] [stdout] test missions::tests::validate_slug_accepts_simple_name ... ok
[INFO] [stdout] test hooks::tests::allows_exit_code_zero_and_captures_stdout ... ok
[INFO] [stdout] test missions::tests::validate_slug_trims_whitespace ... ok
[INFO] [stdout] test missions::tests::validate_slug_rejects_traversal_and_separators ... ok
[INFO] [stdout] test missions::tests::path_under_permitted_roots_rejects_system_dir ... ok
[INFO] [stdout] test model_config::tests::merge_toml_preset_switch ... ok
[INFO] [stdout] test model_config::tests::merge_toml_missing_file_is_noop ... ok
[INFO] [stdout] test model_config::tests::merge_toml_role_overrides ... ok
[INFO] [stdout] test missions::tests::rehydrate_clears_pointer_when_not_a_git_tree ... ok
[INFO] [stdout] test model_config::tests::preset_fast_has_no_fallback ... ok
[INFO] [stdout] test model_config::tests::preset_parse_accepts_three_values ... ok
[INFO] [stdout] test model_config::tests::preset_auto_has_fallback ... ok
[INFO] [stdout] test missions::tests::set_active_persists_non_ephemeral_only ... ok
[INFO] [stdout] test model_config::tests::set_active_replaces_state ... ok
[INFO] [stdout] test model_config::tests::preset_smart_uses_9b_only ... ok
[INFO] [stdout] test permissions::tests::denies_read_only_escalations_without_prompt ... ok
[INFO] [stdout] test permissions::tests::allows_tools_when_active_mode_meets_requirement ... ok
[INFO] [stdout] test model_config::tests::update_active_mutates_and_returns_snapshot ... ok
[INFO] [stdout] test permissions::tests::is_known_returns_false_for_unregistered_tool ... ok
[INFO] [stdout] test permissions::tests::is_known_returns_true_for_registered_tool ... ok
[INFO] [stdout] test permissions::tests::levenshtein_basic_distances ... ok
[INFO] [stdout] test permissions::tests::honors_prompt_rejection_reason ... ok
[INFO] [stdout] test missions::tests::try_bootstrap_local_mission_in_this_repo_succeeds ... ok
[INFO] [stdout] test permissions::tests::max_tier_allows_tools_at_or_below_cap ... ok
[INFO] [stdout] test permissions::tests::max_tier_at_default_preserves_legacy_behaviour ... ok
[INFO] [stdout] test permissions::tests::operation_describe_truncates_long_strings ... ok
[INFO] [stdout] test permissions::tests::max_tier_denies_above_cap_even_in_allow_mode ... ok
[INFO] [stdout] test permissions::tests::operation_describe_shows_execute_argv ... ok
[INFO] [stdout] test permissions::tests::operation_describe_passes_through_short_other ... ok
[INFO] [stdout] test permissions::tests::operation_describe_shows_file_paths ... ok
[INFO] [stdout] test permissions::tests::max_tier_defaults_to_danger_full_access ... ok
[INFO] [stdout] test missions::tests::rehydrate_installs_valid_mission_and_round_trips ... ok
[INFO] [stdout] test permissions::tests::prompts_for_workspace_write_to_danger_full_access_escalation ... ok
[INFO] [stdout] test permissions::tests::suggest_for_respects_max_cap ... ok
[INFO] [stdout] test permissions::tests::suggest_for_returns_close_matches_by_substring ... ok
[INFO] [stdout] test permissions::tests::suggest_for_zero_max_returns_empty ... ok
[INFO] [stdout] test permissions::tests::with_max_tier_overrides_default ... ok
[INFO] [stdout] test permissions::tests::suggest_for_returns_empty_for_distant_names ... ok
[INFO] [stdout] test permissions::tests::suggest_for_finds_levenshtein_neighbors ... ok
[INFO] [stdout] test missions::tests::rehydrate_clears_pointer_on_malformed_json ... ok
[INFO] [stdout] test prompt::tests::default_assistant_persona_parses ... ok
[INFO] [stdout] test prompt::tests::environment_block_is_present ... ok
[INFO] [stdout] test prompt::tests::build_environment_block_contains_platform ... ok
[INFO] [stdout] test prompt::tests::forge_planner_prompt_demands_numbered_list_only ... ok
[INFO] [stdout] test prompt::tests::forge_prompt_appends_memory ... ok
[INFO] [stdout] test prompt::tests::assistant_prompt_includes_eva_overlay_by_default ... ok
[INFO] [stdout] test prompt::tests::forge_prompt_should_submit_false_forbids_mission_submit ... ok
[INFO] [stdout] test prompt::tests::forge_prompt_declares_mission_path ... ok
[INFO] [stdout] test prompt::tests::forge_prompt_skips_blank_persona_fields ... ok
[INFO] [stdout] test prompt::tests::forge_prompt_ignores_blank_memory ... ok
[INFO] [stdout] test prompt::tests::forge_prompt_with_persona_includes_voice_and_backstory ... ok
[INFO] [stdout] test prompt::tests::forge_verifier_prompt_demands_json_shape ... ok
[INFO] [stdout] test prompt::tests::concise_mode_appends_telegram_suffix ... ok
[INFO] [stdout] test prompt::tests::concise_mode_skips_eva_overlay ... ok
[INFO] [stdout] test prompt::tests::memory_is_trimmed_when_appended ... ok
[INFO] [stdout] test prompt::tests::no_memory_returns_base_prompt_only ... ok
[INFO] [stdout] test prompt::tests::prompt_contains_dynamic_group_names ... ok
[INFO] [stdout] test prompt_runtime::tests::dedupes_identical_instruction_content_across_scopes ... ok
[INFO] [stdout] test prompt::tests::faceless_env_disables_eva_overlay ... ok
[INFO] [stdout] test prompt::tests::faceless_truthy_values_all_recognised ... ok
[INFO] [stdout] test prompt_runtime::tests::discovers_dot_claude_instructions_markdown ... ok
[INFO] [stdout] test prompt::tests::prompt_contains_anti_stale_data_nudge ... ok
[INFO] [stdout] test prompt_runtime::tests::displays_context_paths_compactly ... ok
[INFO] [stdout] test prompt::tests::prompt_contains_email_provenance_invariant ... ok
[INFO] [stdout] test prompt_runtime::tests::normalizes_and_collapses_blank_lines ... ok
[INFO] [stdout] test prompt_runtime::tests::discovers_instruction_files_from_ancestor_chain ... ok
[INFO] [stdout] test prompt_runtime::tests::renders_instruction_file_metadata ... ok
[INFO] [stdout] test prompt::tests::real_memory_appended_with_label ... ok
[INFO] [stdout] test prompt_runtime::tests::truncates_instruction_content_to_budget ... ok
[INFO] [stdout] test prompt_runtime::tests::renders_claude_code_style_sections_with_project_context ... ok
[INFO] [stdout] test recall::tests::cosine_handles_zero_vectors ... ok
[INFO] [stdout] test recall::tests::cosine_is_one_for_identical ... ok
[INFO] [stdout] test prompt_runtime::tests::truncates_large_instruction_content_for_rendering ... ok
[INFO] [stdout] test recall::tests::cosine_is_zero_for_orthogonal ... ok
[INFO] [stdout] test recall::tests::cosine_returns_zero_for_mismatched_length ... ok
[INFO] [stdout] test recall::tests::decode_rejects_misaligned_bytes ... ok
[INFO] [stdout] test recall::tests::embedder_failure_propagates_as_error_string ... ok
[INFO] [stdout] test recall::tests::encode_decode_roundtrip ... ok
[INFO] [stdout] test recall::tests::json_array_to_f32s_rejects_empty ... ok
[INFO] [stdout] test recall::tests::json_array_to_f32s_rejects_non_numeric ... ok
[INFO] [stdout] test recall::tests::fifo_eviction_at_cap ... ok
[INFO] [stdout] test recall::tests::empty_query_returns_empty_results ... ok
[INFO] [stdout] test recall::tests::parse_ollama_embedding_happy_path ... ok
[INFO] [stdout] test recall::tests::parse_openai_compat_embedding_happy_path ... ok
[INFO] [stdout] test recall::tests::parse_ollama_embedding_rejects_missing_field ... ok
[INFO] [stdout] test recall::tests::parse_openai_compat_embedding_rejects_empty_data_array ... ok
[INFO] [stdout] test recall::tests::parse_openai_compat_embedding_rejects_missing_data ... ok
[INFO] [stdout] test recall::tests::long_snippet_is_truncated ... ok
[INFO] [stdout] test recall::tests::probe_through_store_returns_err_on_embedder_failure ... ok
[INFO] [stdout] test recall::tests::recall_live_full_index_query_roundtrip ... ignored, requires live LM Studio with embed model loaded
[INFO] [stdout] test recall::tests::recall_live_openai_compat_embed_is_deterministic ... ignored, requires live LM Studio with embed model loaded
[INFO] [stdout] test recall::tests::results_are_sorted_descending_by_score ... ok
[INFO] [stdout] test recall::tests::role_parse_roundtrip ... ok
[INFO] [stdout] test prompt::tests::none_memory_equals_no_memory ... ok
[INFO] [stdout] test recall::tests::store_skips_empty_snippets ... ok
[INFO] [stdout] test run::tests::best_round_breaks_tie_by_earlier_round ... ok
[INFO] [stdout] test run::tests::best_round_none_on_empty ... ok
[INFO] [stdout] test recall::tests::query_skips_rows_with_mismatched_dim ... ok
[INFO] [stdout] test run::tests::best_round_none_when_all_entries_lack_sha ... ok
[INFO] [stdout] test run::tests::best_round_picks_highest_score_with_recoverable_sha ... ok
[INFO] [stdout] test recall::tests::store_roundtrip_indexes_and_queries ... ok
[INFO] [stdout] test run::tests::best_round_skips_entries_with_no_sha ... ok
[INFO] [stdout] test recall::tests::query_returns_only_top_k_via_heap ... ok
[INFO] [stdout] test run::tests::compact_threshold_default_when_env_var_unset ... ok
[INFO] [stdout] test run::tests::compact_threshold_falls_back_on_garbage ... ok
[INFO] [stdout] test run::tests::compact_threshold_honors_env_var ... ok
[INFO] [stdout] test run::tests::compaction_tier_names_are_lowercase_for_logs ... ok
[INFO] [stdout] test run::tests::default_session_path_honors_env_var ... ok
[INFO] [stdout] test run::tests::forge_default_coder_persona_parses_bundled_codex7 ... ok
[INFO] [stdout] test run::tests::forge_role_model_returns_a_default_for_each_role ... ok
[INFO] [stdout] test run::tests::high_blast_radius_tools_require_danger_tier ... ok
[INFO] [stdout] test run::tests::every_advertised_tool_has_permission_requirement ... ok
[INFO] [stdout] test run::tests::capture_base_sha_returns_none_on_fresh_repo ... ok
[INFO] [stdout] test run::tests::pick_compact_plan_prefers_hard_over_soft_when_both_crossed ... ok
[INFO] [stdout] test run::tests::pick_compact_plan_returns_hard_when_hard_crossed ... ok
[INFO] [stdout] test run::tests::pick_compact_plan_returns_none_below_both_thresholds ... ok
[INFO] [stdout] test run::tests::pick_compact_plan_returns_soft_when_only_soft_crossed ... ok
[INFO] [stdout] test run::tests::pick_compact_plan_skips_soft_when_threshold_unset ... ok
[INFO] [stdout] test run::tests::save_creates_parent_directory ... ok
[INFO] [stdout] test run::tests::save_then_load_round_trip ... ok
[INFO] [stdout] test run::tests::score_declining_detects_two_consecutive_drops ... ok
[INFO] [stdout] test run::tests::score_declining_does_not_fire_on_recovery ... ok
[INFO] [stdout] test run::tests::score_declining_requires_strict_inequality ... ok
[INFO] [stdout] test run::tests::score_declining_returns_false_for_short_history ... ok
[INFO] [stdout] test prompt_runtime::tests::discover_with_git_includes_status_snapshot ... ok
[INFO] [stdout] test run::tests::short_sha_returns_short_inputs_intact ... ok
[INFO] [stdout] test run::tests::short_sha_truncates_long_inputs ... ok
[INFO] [stdout] test prompt::tests::whitespace_memory_treated_as_none ... ok
[INFO] [stdout] test prompt_runtime::tests::load_system_prompt_reads_claude_files_and_config ... ok
[INFO] [stdout] test run::tests::try_load_returns_none_when_missing ... ok
[INFO] [stdout] test run::tests::verifier_clamps_out_of_range_scores ... ok
[INFO] [stdout] test run::tests::verifier_missing_fields_use_permissive_defaults ... ok
[INFO] [stdout] test run::tests::verifier_parses_clean_json ... ok
[INFO] [stdout] test run::tests::verifier_parses_json_in_code_fence ... ok
[INFO] [stdout] test run::tests::verifier_parses_json_with_trailing_prose ... ok
[INFO] [stdout] test run::tests::verifier_unparseable_falls_through_to_pass ... ok
[INFO] [stdout] test sandbox::tests::builds_linux_launcher_with_network_flag_when_requested ... ok
[INFO] [stdout] test sandbox::tests::detects_container_markers_from_multiple_sources ... ok
[INFO] [stdout] test sandbox::tests::resolves_request_with_overrides ... ok
[INFO] [stdout] test scheduler::tests::add_default_catch_up_is_once_for_oneshot_and_skip_for_recurring ... ok
[INFO] [stdout] test scheduler::tests::add_oneshot_persists_and_next_due_reflects_it ... ok
[INFO] [stdout] test scheduler::tests::cancel_removes_entry ... ok
[INFO] [stdout] test scheduler::tests::catch_up_once_returns_missed_oneshot ... ok
[INFO] [stdout] test scheduler::tests::catch_up_skip_drops_missed_recurring ... ok
[INFO] [stdout] test scheduler::tests::fire_due_advances_recurring ... ok
[INFO] [stdout] test scheduler::tests::fire_due_preserves_memory_on_save_failure ... ok
[INFO] [stdout] test scheduler::tests::fire_due_returns_ripe_oneshot_and_removes_it ... ok
[INFO] [stdout] test scheduler::tests::load_missing_file_returns_empty_scheduler ... ok
[INFO] [stdout] test scheduler::tests::malformed_line_is_ignored_not_fatal ... ok
[INFO] [stdout] test scheduler::tests::new_id_shape_is_stable ... ok
[INFO] [stdout] test scheduler::tests::parse_cron_passthrough ... ok
[INFO] [stdout] test run::tests::maybe_compact_session_fires_when_over_threshold ... ok
[INFO] [stdout] test scheduler::tests::parse_daily_builds_star_cron ... ok
[INFO] [stdout] test scheduler::tests::parse_empty_errors ... ok
[INFO] [stdout] test scheduler::tests::parse_every_n_minutes ... ok
[INFO] [stdout] test scheduler::tests::parse_every_weekday_builds_cron ... ok
[INFO] [stdout] test scheduler::tests::parse_in_days ... ok
[INFO] [stdout] test scheduler::tests::parse_in_hours_singular ... ok
[INFO] [stdout] test scheduler::tests::parse_in_minutes ... ok
[INFO] [stdout] test scheduler::tests::parse_in_rejects_unknown_unit ... ok
[INFO] [stdout] test scheduler::tests::parse_in_rejects_zero_or_negative ... ok
[INFO] [stdout] test scheduler::tests::parse_rfc3339_passthrough ... ok
[INFO] [stdout] test scheduler::tests::parse_tomorrow_at_12h_pm ... ok
[INFO] [stdout] test scheduler::tests::parse_tomorrow_at_24h ... ok
[INFO] [stdout] test scheduler::tests::save_and_reload_roundtrip_preserves_entries ... ok
[INFO] [stdout] test secrets::tests::chat_id_path_under_secrets ... ok
[INFO] [stdout] test secrets::tests::load_chat_ids_empty_when_no_file ... ok
[INFO] [stdout] test secrets::tests::read_secret_error_mentions_all_paths ... ok
[INFO] [stdout] test scheduler::tests::parse_gibberish_errors_with_hint ... ok
[INFO] [stdout] test secrets::tests::read_secret_file_fallback ... ok
[INFO] [stdout] test secrets::tests::read_secret_picks_up_env_var ... ok
[INFO] [stdout] test secrets::tests::read_secret_rejects_empty_env_var ... ok
[INFO] [stdout] test secrets::tests::read_secret_trims_whitespace ... ok
[INFO] [stdout] test secrets::tests::secret_file_path_formats_correctly ... ok
[INFO] [stdout] test secrets::tests::secrets_dir_is_under_claudette ... ok
[INFO] [stdout] test secrets::tests::save_and_load_chat_id_roundtrip ... ok
[INFO] [stdout] test telegram_mode::tests::extract_response_text_empty ... ok
[INFO] [stdout] test session::tests::persists_and_restores_session_json ... ok
[INFO] [stdout] test telegram_mode::tests::find_safe_cut_closed_code_fence ... ok
[INFO] [stdout] test telegram_mode::tests::find_safe_cut_incomplete_paragraph ... ok
[INFO] [stdout] test telegram_mode::tests::find_safe_cut_inside_open_code_fence_waits ... ok
[INFO] [stdout] test telegram_mode::tests::find_safe_cut_one_completed_paragraph ... ok
[INFO] [stdout] test telegram_mode::tests::find_safe_cut_two_completed_paragraphs ... ok
[INFO] [stdout] test telegram_mode::tests::paragraph_pacing_respects_min_and_max ... ok
[INFO] [stdout] test telegram_mode::tests::split_message_at_newline ... ok
[INFO] [stdout] test telegram_mode::tests::split_message_multibyte_safe_boundary ... ok
[INFO] [stdout] test telegram_mode::tests::split_message_no_newline ... ok
[INFO] [stdout] test telegram_mode::tests::split_message_short ... ok
[INFO] [stdout] test telegram_mode::tests::split_paragraphs_breaks_on_blank_line ... ok
[INFO] [stdout] test telegram_mode::tests::split_paragraphs_hard_splits_oversize ... ok
[INFO] [stdout] test telegram_mode::tests::split_paragraphs_keeps_code_block_whole ... ok
[INFO] [stdout] test telegram_mode::tests::split_paragraphs_merges_short_forward ... ok
[INFO] [stdout] test telegram_mode::tests::split_paragraphs_single_short ... ok
[INFO] [stdout] test telegram_mode::tests::split_paragraphs_unterminated_code_fence_stays_together ... ok
[INFO] [stdout] test test_runner::tests::check_python_imports_allows_stdlib_only ... ok
[INFO] [stdout] test test_runner::tests::check_python_imports_flags_obvious_miss ... ok
[INFO] [stdout] test test_runner::tests::has_python_tests_detects_patterns ... ok
[INFO] [stdout] test test_runner::tests::has_python_tests_returns_false_for_plain_code ... ok
[INFO] [stdout] test test_runner::tests::parse_unittest_all_pass ... ok
[INFO] [stdout] test test_runner::tests::check_python_imports_skips_relative_imports ... ok
[INFO] [stdout] test test_runner::tests::parse_unittest_empty_output_nonzero_exit ... ok
[INFO] [stdout] test test_runner::tests::parse_unittest_mixed_fail_and_error ... ok
[INFO] [stdout] test test_runner::tests::parse_unittest_one_failure ... ok
[INFO] [stdout] test test_runner::tests::parse_unittest_success_no_verbose_lines ... ok
[INFO] [stdout] test theme::tests::all_helpers_round_trip_text ... ok
[INFO] [stdout] test test_runner::tests::run_command_drains_large_output_without_timeout ... ok
[INFO] [stdout] test theme::tests::emoji_constants_are_non_empty ... ok
[INFO] [stdout] test theme::tests::init_is_idempotent ... ok
[INFO] [stdout] test tool_groups::tests::advanced_group_contains_spawn_agent ... ok
[INFO] [stdout] test run::tests::maybe_compact_session_no_op_when_under_threshold ... ok
[INFO] [stdout] test run::tests::soft_compact_threshold_returns_none_when_unset ... ok
[INFO] [stdout] test run::tests::soft_compact_threshold_returns_some_when_set ... ok
[INFO] [stdout] test run::tests::soft_compact_threshold_treats_zero_as_unset ... ok
[INFO] [stdout] test tool_groups::tests::enable_group_idempotent ... ok
[INFO] [stdout] test tool_groups::tests::enable_tools_schema_has_no_enum ... ok
[INFO] [stdout] test tool_groups::tests::enable_tools_schema_mentions_every_group ... ok
[INFO] [stdout] test tool_groups::tests::group_of_classifies_known_tools ... ok
[INFO] [stdout] test tool_groups::tests::group_of_returns_none_for_core ... ok
[INFO] [stdout] test tool_groups::tests::enable_group_adds_tools_to_current ... ok
[INFO] [stdout] test tool_groups::tests::group_tool_names_returns_schema_order ... ok
[INFO] [stdout] test tool_groups::tests::every_advertised_tool_is_classified ... ok
[INFO] [stdout] test tool_groups::tests::parse_group_aliases ... ok
[INFO] [stdout] test tool_groups::tests::github_group_includes_brownfield_tools ... ok
[INFO] [stdout] test tool_groups::tests::parse_group_canonical ... ok
[INFO] [stdout] test tool_groups::tests::registry_current_tools_starts_at_core_size ... ok
[INFO] [stdout] test tool_groups::tests::enable_multiple_groups_combines_tools ... ok
[INFO] [stdout] test tool_groups::tests::enable_tools_group_param_has_no_redundant_description ... ok
[INFO] [stdout] test tool_groups::tests::parse_group_unknown ... ok
[INFO] [stdout] test tool_groups::tests::registry_starts_with_only_core ... ok
[INFO] [stdout] test tools::calendar::tests::calendar_respond_to_event_alias_still_dispatches ... ok
[INFO] [stdout] test tools::calendar::tests::create_event_rejects_missing_summary ... ok
[INFO] [stdout] test tools::calendar::tests::delete_event_rejects_missing_event_id ... ok
[INFO] [stdout] test tools::calendar::tests::create_event_rejects_missing_end ... ok
[INFO] [stdout] test tools::calendar::tests::list_events_defaults_calendar_id_to_primary ... ok
[INFO] [stdout] test tools::calendar::tests::respond_to_event_alias_rejects_missing_event_id ... ok
[INFO] [stdout] test tools::calendar::tests::respond_to_event_alias_rejects_bad_response_value ... ok
[INFO] [stdout] test tool_groups::tests::schema_chars_grows_with_enables ... ok
[INFO] [stdout] test tools::calendar::tests::encode_segment_escapes_at_and_colon ... ok
[INFO] [stdout] test tools::calendar::tests::schemas_lists_four_tools ... ok
[INFO] [stdout] test tools::calendar::tests::update_event_rejects_missing_event_id ... ok
[INFO] [stdout] test tools::calendar::tests::update_event_rsvp_rejects_bad_value ... ok
[INFO] [stdout] test tools::calendar::tests::summarize_event_handles_all_day ... ok
[INFO] [stdout] test tools::clipboard::tests::clipboard_round_trip ... ok
[INFO] [stdout] test tools::clipboard::tests::clipboard_write_rejects_missing_text ... ok
[INFO] [stdout] test tools::clipboard::tests::schemas_lists_two_tools ... ok
[INFO] [stdout] test tools::calendar::tests::update_event_rejects_empty_patch ... ok
[INFO] [stdout] test tools::calendar::tests::summarize_event_extracts_common_fields ... ok
[INFO] [stdout] test tools::codegen::tests::collect_reference_files_honours_turn_stash ... ok
[INFO] [stdout] test tools::codegen::tests::collect_reference_files_caps_file_size ... ok
[INFO] [stdout] test tools::codegen::tests::collect_reference_files_explicit_respects_max_files ... ok
[INFO] [stdout] test tools::codegen::tests::collect_reference_files_dedups_explicit_and_scanner ... ok
[INFO] [stdout] test tools::codegen::tests::collect_reference_files_ignores_missing_and_non_code ... ok
[INFO] [stdout] test tools::codegen::tests::extract_path_candidates_ignores_urls_and_prose ... ok
[INFO] [stdout] test tools::codegen::tests::collect_reference_files_reads_tilde_path ... ok
[INFO] [stdout] test tools::codegen::tests::extract_path_candidates_keeps_bare_code_filename ... ok
[INFO] [stdout] test tools::codegen::tests::collect_reference_files_uses_explicit_param ... ok
[INFO] [stdout] test tools::codegen::tests::collect_reference_files_silently_drops_invalid_explicit_paths ... ok
[INFO] [stdout] test tools::codegen::tests::extract_path_candidates_strips_punctuation_and_brackets ... ok
[INFO] [stdout] test tools::codegen::tests::extract_user_prompt_paths_keeps_existing_files_only ... ok
[INFO] [stdout] test tools::codegen::tests::has_code_extension_recognises_code_files ... ok
[INFO] [stdout] test tools::codegen::tests::set_current_turn_paths_overwrites_previous_stash ... ok
[INFO] [stdout] test tools::codegen::tests::schemas_lists_two_tools ... ok
[INFO] [stdout] test tools::codegen::tests::looks_like_path_recognises_common_shapes ... ok
[INFO] [stdout] test tools::dialog::tests::ask_user_rejects_empty_question ... ok
[INFO] [stdout] test tools::dialog::tests::ask_user_errors_without_default_when_no_tty ... ok
[INFO] [stdout] test tools::dialog::tests::schemas_lists_one_tool ... ok
[INFO] [stdout] test tools::dialog::tests::ask_user_rejects_missing_question ... ok
[INFO] [stdout] test tools::dialog::tests::ask_user_uses_default_when_no_tty ... ok
[INFO] [stdout] test tools::facts::tests::hebrew_city_alias_maps_hebrew_to_english ... ok
[INFO] [stdout] test tools::facts::tests::hebrew_city_alias_maps_transliterations ... ok
[INFO] [stdout] test prompt_runtime::tests::discover_with_git_includes_diff_snapshot_for_tracked_changes ... ok
[INFO] [stdout] test tools::facts::tests::hebrew_city_alias_returns_none_for_regular_name ... ok
[INFO] [stdout] test run::tests::capture_git_diff_with_base_sees_committed_coder_work ... ok
[INFO] [stdout] test tools::facts::tests::resolve_location_accepts_lat_lon_shortcut ... ok
[INFO] [stdout] test tools::facts::tests::schemas_lists_two_tools ... ok
[INFO] [stdout] test tools::facts::tests::weather_rejects_missing_location ... ok
[INFO] [stdout] test tools::facts::tests::weather_current_alias_rejects_missing_location ... ok
[INFO] [stdout] test tools::facts::tests::weather_forecast_alias_rejects_missing_location ... ok
[INFO] [stdout] test tools::facts::tests::wikipedia_rejects_missing_query ... ok
[INFO] [stdout] test tools::facts::tests::wikipedia_search_alias_rejects_missing_query ... ok
[INFO] [stdout] test tools::facts::tests::wikipedia_summary_alias_rejects_missing_title ... ok
[INFO] [stdout] test tools::facts::tests::wmo_label_covers_common_buckets ... ok
[INFO] [stdout] test tools::file_ops::tests::is_code_extension_classifies_correctly ... ok
[INFO] [stdout] test tools::file_ops::tests::schemas_lists_three_tools ... ok
[INFO] [stdout] test tools::file_ops::tests::write_file_allows_text_extension ... ok
[INFO] [stdout] test tools::file_ops::tests::write_file_refuses_python_extension ... ok
[INFO] [stdout] test tools::file_ops::tests::write_file_allows_data_and_config_extensions ... ok
[INFO] [stdout] test tools::file_ops::tests::write_file_refuses_rust_extension ... ok
[INFO] [stdout] test tools::file_ops::tests::write_file_resolves_bare_relative_under_sandbox ... ok
[INFO] [stdout] test tools::file_ops::tests::write_file_still_rejects_absolute_outside_sandbox ... ok
[INFO] [stdout] test tools::forge_tail::tests::forge_tail_explains_when_no_active_mission_and_no_arg ... ok
[INFO] [stdout] test tools::forge_tail::tests::forge_tail_reads_existing_log ... ok
[INFO] [stdout] test tools::forge_tail::tests::forge_tail_reports_missing_log_for_explicit_mission_id ... ok
[INFO] [stdout] test tools::facts::tests::wikipedia_aliases_dispatch ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::after_without_trailing_newline_gets_one ... ok
[INFO] [stdout] test tools::forge_tail::tests::schemas_lists_one_tool ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::crlf_in_content_lf_in_diff_falls_back ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::empty_before_errors ... ok
[INFO] [stdout] test tools::facts::tests::weather_aliases_dispatch ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::exact_multiple_matches_is_ambiguous ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::exact_match_replaces ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::last_block_in_file_with_no_trailing_newline ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::line_trim_ambiguity_detected ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::missing_before_returns_not_found ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::replacement_preserves_surrounding_content ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::run_apply_diff_rejects_missing_before ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::schemas_lists_one_tool ... ok
[INFO] [stdout] test tools::fuzzy_apply::tests::whitespace_drift_falls_back_to_line_trim ... ok
[INFO] [stdout] test tools::git::tests::extract_stat_number_missing ... ok
[INFO] [stdout] test tools::git::tests::extract_stat_number_from_summary ... ok
[INFO] [stdout] test tools::git::tests::extract_stat_number_single_insertion ... ok
[INFO] [stdout] test tools::git::tests::reject_destructive_blocks_force ... ok
[INFO] [stdout] test tools::git::tests::run_git_clone_rejects_bad_url ... ok
[INFO] [stdout] test tools::git::tests::run_git_clone_rejects_bad_dest ... ok
[INFO] [stdout] test tools::git::tests::run_git_clone_rejects_missing_fields ... ok
[INFO] [stdout] test tools::git::tests::validate_clone_url_accepts_known_schemes ... ok
[INFO] [stdout] test tools::git::tests::schemas_lists_nine_tools ... ok
[INFO] [stdout] test tools::git::tests::validate_clone_url_rejects_other_schemes ... ok
[INFO] [stdout] test tools::git::tests::validate_dest_slug_accepts_simple_name ... ok
[INFO] [stdout] test tools::git::tests::validate_dest_slug_rejects_traversal ... ok
[INFO] [stdout] test tools::github::tests::extract_error_lines_keeps_markers_and_context ... ok
[INFO] [stdout] test tools::github::tests::gh_comment_issue_rejects_missing_body ... ok
[INFO] [stdout] test tools::github::tests::gh_create_issue_rejects_missing_title ... ok
[INFO] [stdout] test tools::github::tests::gh_create_pr_rejects_missing_base ... ok
[INFO] [stdout] test tools::github::tests::gh_create_pr_rejects_missing_head ... ok
[INFO] [stdout] test tools::github::tests::gh_fork_rejects_missing_repo ... ok
[INFO] [stdout] test tools::github::tests::gh_get_issue_rejects_missing_fields ... ok
[INFO] [stdout] test tools::github::tests::extract_error_lines_truncates_huge_logs ... ok
[INFO] [stdout] test tools::github::tests::gh_inbox_legacy_aliases_dispatch ... ok
[INFO] [stdout] test tools::github::tests::gh_inbox_rejects_missing_scope ... ok
[INFO] [stdout] test tools::github::tests::gh_inbox_repo_issues_forwards_owner_repo_validation ... ok
[INFO] [stdout] test tools::github::tests::gh_inbox_rejects_unknown_scope ... ok
[INFO] [stdout] test tools::github::tests::gh_list_repo_issues_rejects_missing_repo ... ok
[INFO] [stdout] test tools::github::tests::gh_pr_status_rejects_missing_number ... ok
[INFO] [stdout] test tools::github::tests::gh_pr_view_rejects_missing_number ... ok
[INFO] [stdout] test tools::github::tests::gh_pr_view_rejects_missing_owner ... ok
[INFO] [stdout] test tools::github::tests::gh_search_code_rejects_missing_query ... ok
[INFO] [stdout] test tools::github::tests::gh_workflow_logs_rejects_missing_owner ... ok
[INFO] [stdout] test tools::github::tests::github_token_error_mentions_env_and_file ... ok
[INFO] [stdout] test tools::github::tests::gh_workflow_logs_requires_resolver_arg ... ok
[INFO] [stdout] test tools::gmail::tests::base64url_decodes_url_safe_chars ... ok
[INFO] [stdout] test tools::gmail::tests::base64url_handles_utf8_body ... ok
[INFO] [stdout] test tools::github::tests::schemas_lists_eleven_tools ... ok
[INFO] [stdout] test tools::gmail::tests::base64url_roundtrip_ascii ... ok
[INFO] [stdout] test tools::gmail::tests::base64url_tolerates_embedded_newlines ... ok
[INFO] [stdout] test tools::gmail::tests::escape_attr_strips_newlines_and_truncates ... ok
[INFO] [stdout] test tools::gmail::tests::gmail_read_rejects_missing_id ... ok
[INFO] [stdout] test tools::gmail::tests::gmail_search_rejects_missing_query ... ok
[INFO] [stdout] test tools::gmail::tests::mime_walker_falls_back_to_placeholder_when_html_only ... ok
[INFO] [stdout] test tools::gmail::tests::headers_case_insensitive ... ok
[INFO] [stdout] test tools::gmail::tests::mime_walker_finds_direct_text_plain ... ok
[INFO] [stdout] test tools::gmail::tests::mime_walker_finds_text_plain_inside_multipart_alternative ... ok
[INFO] [stdout] test tools::gmail::tests::mime_walker_returns_empty_on_empty_payload ... ok
[INFO] [stdout] test tools::gmail::tests::mime_walker_recurses_into_nested_multipart ... ok
[INFO] [stdout] test tools::gmail::tests::sanitise_body_defangs_case_variants ... ok
[INFO] [stdout] test tools::gmail::tests::sanitise_body_defangs_email_close_tag ... ok
[INFO] [stdout] test tools::gmail::tests::sanitise_body_defangs_html_entity_form ... ok
[INFO] [stdout] test tools::gmail::tests::sanitise_body_defangs_whitespace_injected ... ok
[INFO] [stdout] test tools::gmail::tests::sanitise_body_leaves_benign_text_alone ... ok
[INFO] [stdout] test tools::gmail::tests::sanitise_body_preserves_unicode_content ... ok
[INFO] [stdout] test tools::gmail::tests::schemas_lists_four_tools ... ok
[INFO] [stdout] test tools::gmail::tests::summarize_full_message_reports_html_only ... ok
[INFO] [stdout] test tools::gmail::tests::summarize_full_message_wraps_hostile_instructions_in_email_tags ... ok
[INFO] [stdout] test tools::gmail::tests::wrap_email_includes_attrs_and_body ... ok
[INFO] [stdout] test tools::ide::tests::open_in_editor_rejects_missing_path ... ok
[INFO] [stdout] test tools::ide::tests::open_url_rejects_bare_string_that_is_not_a_path ... ok
[INFO] [stdout] test tools::ide::tests::open_url_rejects_missing_url ... ok
[INFO] [stdout] test tools::ide::tests::reveal_in_explorer_rejects_missing_path ... ok
[INFO] [stdout] test tools::gmail::tests::sanitise_body_truncates_oversize ... ok
[INFO] [stdout] test tools::markets::tests::resolve_tv_symbol_bare_crypto_tries_binance ... ok
[INFO] [stdout] test tools::markets::tests::resolve_tv_symbol_bare_stock_tries_nasdaq ... ok
[INFO] [stdout] test tools::file_ops::tests::read_file_round_trip_through_handlers ... ok
[INFO] [stdout] test tools::facts::tests::wikipedia_rejects_unknown_mode ... ok
[INFO] [stdout] test tools::file_ops::tests::write_file_refuses_uppercase_code_extension ... ok
[INFO] [stdout] test tools::markets::tests::schemas_lists_one_tool ... ok
[INFO] [stdout] test tools::ide::tests::schemas_lists_three_tools ... ok
[INFO] [stdout] test tools::markets::tests::tv_get_quote_rejects_missing_symbol ... ok
[INFO] [stdout] test tools::markets::tests::tv_market_path_defaults_to_america ... ok
[INFO] [stdout] test tools::mission::tests::derive_dest_from_url_handles_trailing_slash_and_dot_git ... ok
[INFO] [stdout] test tools::mission::tests::mission_state_attach_forwards_slug_validation ... ok
[INFO] [stdout] test tools::mission::tests::mission_state_rejects_unknown_action ... ok
[INFO] [stdout] test tools::mission::tests::mission_state_legacy_aliases_dispatch ... ok
[INFO] [stdout] test tools::mission::tests::mission_state_status_and_list_run_without_args ... ok
[INFO] [stdout] test tools::mission::tests::mission_state_rejects_missing_action ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_https_github ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_https_github_no_dot_git ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_non_github_url_keeps_repo_none ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_owner_repo_form ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_owner_repo_strips_dot_git ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_rejects_empty ... ok
[INFO] [stdout] test tool_groups::tests::schema_size_report ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_rejects_three_slash_form ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_rejects_unsupported_scheme ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_ssh_github ... ok
[INFO] [stdout] test tools::mission::tests::parse_target_rejects_traversal_in_owner_repo ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_attach_errors_when_marker_missing ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_attach_errors_when_slot_occupied ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_attach_rejects_invalid_slug ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_attach_rejects_missing_slug ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_exit_errors_when_nothing_active ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_list_note_present_iff_orphans_nonempty ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_list_succeeds_even_when_root_absent ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_start_rejects_missing_target ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_status_returns_null_when_inactive ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_submit_rejects_missing_title ... ok
[INFO] [stdout] test tools::mission::tests::run_mission_submit_rejects_when_no_active_mission ... ok
[INFO] [stdout] test tools::mission::tests::schemas_lists_three_tools ... ok
[INFO] [stdout] test tools::notes::tests::note_create_without_id_still_requires_title_and_body ... ok
[INFO] [stdout] test tools::notes::tests::note_delete_rejects_missing_id ... ok
[INFO] [stdout] test tools::notes::tests::note_delete_rejects_nonexistent ... ok
[INFO] [stdout] test tools::notes::tests::note_create_with_id_is_upsert ... ok
[INFO] [stdout] test tools::notes::tests::note_delete_rejects_path_traversal ... ok
[INFO] [stdout] test tools::notes::tests::note_list_accepts_limit_and_search_without_error ... ok
[INFO] [stdout] test tools::notes::tests::note_read_rejects_directory_separator ... ok
[INFO] [stdout] test tools::notes::tests::note_read_rejects_missing_id ... ok
[INFO] [stdout] test tools::notes::tests::note_read_rejects_nonexistent_note ... ok
[INFO] [stdout] test tools::notes::tests::note_read_rejects_path_traversal ... ok
[INFO] [stdout] test tools::notes::tests::note_list_empty_tag_is_ignored ... ok
[INFO] [stdout] test tools::notes::tests::note_update_alias_still_dispatches ... ok
[INFO] [stdout] test tools::notes::tests::note_update_preserves_created_adds_updated_line ... ok
[INFO] [stdout] test tools::notes::tests::note_update_rejects_missing_id ... ok
[INFO] [stdout] test tools::notes::tests::note_update_empty_tags_string_clears_tags ... ok
[INFO] [stdout] test tools::notes::tests::note_update_rejects_no_fields_to_update ... ok
[INFO] [stdout] test tools::notes::tests::note_update_rejects_nonexistent_note ... ok
[INFO] [stdout] test tools::notes::tests::note_update_rejects_path_traversal ... ok
[INFO] [stdout] test tools::notes::tests::note_update_replaces_body_only ... ok
[INFO] [stdout] test tools::notes::tests::note_update_tags_replace_not_merge ... ok
[INFO] [stdout] test tools::notes::tests::schemas_lists_four_tools ... ok
[INFO] [stdout] test tools::notes::tests::slugify_basic ... ok
[INFO] [stdout] test tools::patch::tests::apply_hunks_errors_on_context_mismatch ... ok
[INFO] [stdout] test tools::patch::tests::apply_hunks_errors_on_past_eof ... ok
[INFO] [stdout] test tools::patch::tests::apply_hunks_handles_drift_between_hunks ... ok
[INFO] [stdout] test tools::patch::tests::apply_hunks_replaces_single_line ... ok
[INFO] [stdout] test tools::mission::tests::parse_github_canonical_recognises_known_forms ... ok
[INFO] [stdout] test tools::mission::tests::parse_github_canonical_returns_none_for_other_hosts ... ok
[INFO] [stdout] test tools::patch::tests::apply_patch_dry_run_does_not_touch_disk ... ok
[INFO] [stdout] test tools::patch::tests::apply_patch_rejects_diff_without_file_header ... ok
[INFO] [stdout] test tools::notes::tests::note_update_title_change_keeps_filename_updates_heading ... ok
[INFO] [stdout] test tools::patch::tests::apply_patch_rejects_missing_diff ... ok
[INFO] [stdout] test tools::patch::tests::apply_patch_rejects_empty_diff ... ok
[INFO] [stdout] test tools::patch::tests::parse_diff_supports_multi_file ... ok
[INFO] [stdout] test tools::patch::tests::parse_diff_extracts_b_prefix_path ... ok
[INFO] [stdout] test tools::patch::tests::apply_patch_is_atomic_across_files ... ok
[INFO] [stdout] test tools::quality::tests::active_cwd_returns_path ... ok
[INFO] [stdout] test tools::patch::tests::schemas_lists_one_tool ... ok
[INFO] [stdout] test tools::quality::tests::detect_framework_returns_none_when_no_markers ... ok
[INFO] [stdout] test tools::quality::tests::detect_framework_prefers_closest_marker ... ok
[INFO] [stdout] test tools::quality::tests::detect_diag_tool_prefers_closest_marker ... ok
[INFO] [stdout] test tools::patch::tests::apply_patch_writes_when_not_dry_run ... ok
[INFO] [stdout] test tools::quality::tests::diagnostics_rejects_unknown_tool ... ok
[INFO] [stdout] test tools::quality::tests::parse_cargo_counts_pulls_passed_and_failed ... ok
[INFO] [stdout] test tools::quality::tests::parse_cargo_messages_extracts_primary_span ... ok
[INFO] [stdout] test tools::quality::tests::parse_go_counts_tallies_marker_lines ... ok
[INFO] [stdout] test tools::quality::tests::parse_mypy_lines_extracts_code_in_brackets ... ok
[INFO] [stdout] test tools::quality::tests::parse_pytest_counts_pulls_summary_line ... ok
[INFO] [stdout] test tools::quality::tests::parse_ruff_json_array ... ok
[INFO] [stdout] test tools::quality::tests::parse_tsc_lines_extracts_position_and_code ... ok
[INFO] [stdout] test tools::quality::tests::parse_pytest_failures_extracts_name_and_file ... ok
[INFO] [stdout] test tools::quality::tests::run_tests_rejects_unknown_framework ... ok
[INFO] [stdout] test tools::quality::tests::schemas_lists_two_tools ... ok
[INFO] [stdout] test tools::recall::tests::dispatch_returns_none_for_other_names ... ok
[INFO] [stdout] test tools::recall::tests::run_recall_rejects_missing_query ... ok
[INFO] [stdout] test tools::recall::tests::schemas_lists_one_tool ... ok
[INFO] [stdout] test tools::registry::tests::crate_info_rejects_missing_name ... ok
[INFO] [stdout] test tools::registry::tests::npm_info_rejects_missing_name ... ok
[INFO] [stdout] test tools::registry::tests::schemas_lists_two_tools ... ok
[INFO] [stdout] test tools::schedule::tests::parse_catch_up_accepts_all_three_values ... ok
[INFO] [stdout] test tools::schedule::tests::schedule_cancel_rejects_missing_id ... ok
[INFO] [stdout] test tools::schedule::tests::schedule_cancel_rejects_unknown_id ... ok
[INFO] [stdout] test tools::schedule::tests::schedule_once_rejects_invalid_expression ... ok
[INFO] [stdout] test tools::schedule::tests::schedule_once_rejects_missing_prompt ... ok
[INFO] [stdout] test tools::recall::tests::run_recall_rejects_non_json ... ok
[INFO] [stdout] test tools::schedule::tests::schedule_once_rejects_missing_when ... ok
[INFO] [stdout] test tools::schedule::tests::schemas_lists_four_tools ... ok
[INFO] [stdout] test tools::search::tests::glob_search_rejects_missing_pattern ... ok
[INFO] [stdout] test tools::search::tests::grep_search_rejects_empty_pattern_inline ... ok
[INFO] [stdout] test tools::search::tests::grep_search_rejects_missing_pattern ... ok
[INFO] [stdout] test tools::search::tests::schemas_lists_three_tools ... ok
[INFO] [stdout] test tools::search::tests::web_fetch_rejects_missing_url ... ok
[INFO] [stdout] test tools::search::tests::web_fetch_rejects_non_http_scheme_inline ... ok
[INFO] [stdout] test tools::semantic::tests::chunk_file_splits_at_configured_line_limit ... ok
[INFO] [stdout] test tools::schedule::tests::schedule_recurring_rejects_oneshot_expression ... ok
[INFO] [stdout] test tools::quality::tests::parse_cargo_messages_skips_non_compiler_lines ... ok
[INFO] [stdout] test tools::quality::tests::parse_jest_counts_handles_full_summary ... ok
[INFO] [stdout] test tools::semantic::tests::is_text_file_recognises_common_extensions ... ok
[INFO] [stdout] test tools::semantic::tests::jaccard_zero_on_disjoint ... ok
[INFO] [stdout] test tools::semantic::tests::jaccard_is_intersection_over_union ... ok
[INFO] [stdout] test tools::semantic::tests::schemas_lists_one_tool ... ok
[INFO] [stdout] test tools::semantic::tests::semantic_grep_rejects_missing_query ... ok
[INFO] [stdout] test tools::semantic::tests::truncate_respects_utf8_boundaries ... ok
[INFO] [stdout] test tools::shell::tests::bash_background_rejects_empty_command ... ok
[INFO] [stdout] test tools::shell::tests::bash_background_rejects_missing_command ... ok
[INFO] [stdout] test tools::shell::tests::bash_rejects_empty_command ... ok
[INFO] [stdout] test tools::shell::tests::bash_rejects_missing_command ... ok
[INFO] [stdout] test tools::shell::tests::bash_rejects_whitespace_only_command ... ok
[INFO] [stdout] test tools::shell::tests::bash_status_rejects_unknown_job ... ok
[INFO] [stdout] test tools::shell::tests::bash_tail_rejects_unknown_job ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_errors_on_ambiguous_match ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_errors_on_zero_matches ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_rejects_missing_new_text ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_rejects_missing_old_text ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_rejects_missing_path ... ok
[INFO] [stdout] test tools::semantic::tests::tokenize_filters_short_tokens_and_lowercases ... ok
[INFO] [stdout] test tools::shell::tests::schemas_lists_five_tools ... ok
[INFO] [stdout] test tools::shell::tests::edit_file_replaces_unique_match ... ok
[INFO] [stdout] test tools::telegram::tests::schemas_lists_one_tool ... ok
[INFO] [stdout] test tools::telegram::tests::telegram_token_error_mentions_botfather ... ok
[INFO] [stdout] test tools::telegram::tests::legacy_aliases_dispatch ... ok
[INFO] [stdout] test tools::telegram::tests::tg_send_photo_alias_rejects_missing_chat_id ... ok
[INFO] [stdout] test tools::telegram::tests::tg_send_photo_alias_rejects_missing_url ... ok
[INFO] [stdout] test tools::telegram::tests::tg_send_rejects_missing_chat_id ... ok
[INFO] [stdout] test tools::telegram::tests::tg_send_rejects_missing_text ... ok
[INFO] [stdout] test tools::tests::default_workspace_root_returns_first_root_when_cwd_outside ... ok
[INFO] [stdout] test tools::tests::expand_tilde_leaves_other_paths_alone ... ok
[INFO] [stdout] test tools::tests::expand_tilde_replaces_leading_tilde ... ok
[INFO] [stdout] test tools::tests::extract_str_reports_missing_field ... ok
[INFO] [stdout] test tools::tests::default_workspace_root_returns_none_when_env_empty ... ok
[INFO] [stdout] test tools::tests::get_current_time_has_new_fields ... ok
[INFO] [stdout] test tools::tests::glob_search_expands_tilde ... ok
[INFO] [stdout] test tools::tests::glob_search_matches_files_under_home ... ok
[INFO] [stdout] test tools::tests::get_capabilities_reports_real_config ... ok
[INFO] [stdout] test tools::tests::glob_search_rejects_path_outside_home ... ok
[INFO] [stdout] test tools::tests::grep_search_rejects_empty_pattern ... ok
[INFO] [stdout] test tools::tests::grep_search_finds_substring_match ... ok
[INFO] [stdout] test tools::tests::grep_search_skips_hidden_directories ... ok
[INFO] [stdout] test tools::tests::list_dir_classifies_file_and_subdir_correctly ... ok
[INFO] [stdout] test tools::tests::grep_search_rejects_path_outside_home ... ok
[INFO] [stdout] test tools::tests::list_dir_returns_known_entries ... ok
[INFO] [stdout] test tools::tests::normalize_path_collapses_dotdot ... ok
[INFO] [stdout] test tools::tests::normalize_path_empty_becomes_dot ... ok
[INFO] [stdout] test tools::tests::normalize_path_keeps_leading_dotdot_on_relative ... ok
[INFO] [stdout] test tools::tests::normalize_path_collapses_dot ... ok
[INFO] [stdout] test tools::git::tests::git_commit_empty_message_triggers_auto ... ok
[INFO] [stdout] test tools::tests::parse_json_input_reports_tool_name ... ok
[INFO] [stdout] test tools::tests::resolve_input_path_falls_back_to_workspace_when_cwd_misses ... ok
[INFO] [stdout] test tools::tests::sanitise_untrusted_defangs_close_tag_variants ... ok
[INFO] [stdout] test tools::tests::notes_and_todos_round_trip ... ok
[INFO] [stdout] test tools::tests::sanitise_untrusted_defangs_entity_close_tag ... ok
[INFO] [stdout] test tools::tests::strip_html_collapses_whitespace ... ok
[INFO] [stdout] test tools::tests::strip_html_decodes_common_entities ... ok
[INFO] [stdout] test tools::tests::strip_html_drops_script_and_style_blocks ... ok
[INFO] [stdout] test tools::tests::strip_html_removes_simple_tags ... ok
[INFO] [stdout] test tools::tests::note_and_todo_tools_classified_into_their_groups ... ok
[INFO] [stdout] test tools::tests::validate_read_path_accepts_paths_under_home ... ok
[INFO] [stdout] test tools::tests::validate_read_path_rejects_symlink_escape ... ok
[INFO] [stdout] test tools::tests::strip_html_handles_uppercase_script_tag ... ok
[INFO] [stdout] test tools::tests::validate_read_path_rejects_traversal_escape ... ok
[INFO] [stdout] test tools::tests::validate_read_path_with_injects_custom_roots ... ok
[INFO] [stdout] test tools::tests::validate_write_path_accepts_scratch_subdirs ... ok
[INFO] [stdout] test tools::tests::validate_write_path_rejects_outside_scratch ... ok
[INFO] [stdout] test tools::tests::validate_write_path_rejects_dotdot_escape_from_scratch ... ok
[INFO] [stdout] test tools::tests::workspace_roots_from_env_captures_home ... ok
[INFO] [stdout] test tools::tests::web_fetch_rejects_non_http_scheme ... ok
[INFO] [stdout] test tools::tests::workspace_roots_parse_workspace_env_empty_when_unset ... ok
[INFO] [stdout] test tools::tests::workspace_roots_parse_workspace_env_splits_on_platform_sep ... ok
[INFO] [stdout] test tools::tests::workspace_startup_diagnostics_quiet_when_cwd_under_home ... ok
[INFO] [stdout] test tools::tests::workspace_startup_diagnostics_quiet_when_workspace_set ... ok
[INFO] [stdout] test tools::tests::workspace_startup_diagnostics_warns_on_unwrappered_cwd ... ok
[INFO] [stdout] test tools::tests::wrap_untrusted_encloses_body_and_source ... ok
[INFO] [stdout] test tools::tests::wrap_untrusted_escapes_source_quotes_and_newlines ... ok
[INFO] [stdout] test tools::todos::tests::schemas_lists_four_tools ... ok
[INFO] [stdout] test tools::todos::tests::todo_add_rejects_empty_text ... ok
[INFO] [stdout] test tools::todos::tests::todo_add_rejects_missing_text ... ok
[INFO] [stdout] test tools::todos::tests::todo_add_rejects_whitespace_only_text ... ok
[INFO] [stdout] test tools::todos::tests::todo_complete_alias_dispatches ... ok
[INFO] [stdout] test tools::todos::tests::todo_delete_rejects_missing_id ... ok
[INFO] [stdout] test tools::tests::validate_read_path_respects_claudette_workspace ... ok
[INFO] [stdout] test tools::todos::tests::todo_delete_rejects_unknown_id ... ok
[INFO] [stdout] test tools::todos::tests::todo_list_pending_only_flag_passes_through ... ok
[INFO] [stdout] test tools::todos::tests::todo_set_status_rejects_missing_done ... ok
[INFO] [stdout] test tools::todos::tests::todo_set_status_rejects_missing_id ... ok
[INFO] [stdout] test tools::todos::tests::todo_set_status_rejects_unknown_id ... ok
[INFO] [stdout] test tools::todos::tests::todo_uncomplete_alias_dispatches ... ok
[INFO] [stdout] test tools::todos::tests::todo_uncomplete_alias_rejects_missing_id ... ok
[INFO] [stdout] test tools::vision::tests::build_screenshot_command_returns_non_empty_program ... ok
[INFO] [stdout] test tools::vision::tests::image_describe_rejects_missing_path ... ok
[INFO] [stdout] test tools::vision::tests::image_describe_rejects_non_image_extension ... ok
[INFO] [stdout] test tools::vision::tests::schemas_lists_two_tools ... ok
[INFO] [stdout] test tools::web_search::tests::render_response_defangs_close_tag_smuggled_via_description ... ok
[INFO] [stdout] test tools::web_search::tests::render_response_handles_empty_results ... ok
[INFO] [stdout] test tools::web_search::tests::render_response_includes_infobox_inside_wrap ... ok
[INFO] [stdout] test tools::todos::tests::todo_complete_alias_rejects_missing_id ... ok
[INFO] [stdout] test tools::web_search::tests::render_response_wraps_results_in_untrusted_tag ... ok
[INFO] [stdout] test tools::web_search::tests::schemas_lists_one_tool ... ok
[INFO] [stdout] test tools::web_search::tests::web_search_rejects_invalid_json ... ok
[INFO] [stdout] test tools::web_search::tests::web_search_rejects_missing_query ... ok
[INFO] [stdout] test tts::tests::synthesize_skips_empty_text ... ok
[INFO] [stdout] test tts::tests::tts_max_chars_default ... ok
[INFO] [stdout] test tts::tests::synthesize_skips_long_text ... ok
[INFO] [stdout] test tts::tests::voice_for_lang_hebrew ... ok
[INFO] [stdout] test tts::tests::voice_for_lang_fallback ... ok
[INFO] [stdout] test tui::paste::tests::display_shows_preview_and_count ... ok
[INFO] [stdout] test tui::paste::tests::clear_removes_active_state ... ok
[INFO] [stdout] test tui::paste::tests::large_text_stored_and_retrieved ... ok
[INFO] [stdout] test tui::paste::tests::small_text_not_stored ... ok
[INFO] [stdout] test tui::render::tests::wrapped_row_count_empty_line_still_counts_as_one_row ... ok
[INFO] [stdout] test tui::render::tests::wrapped_row_count_handles_zero_width_without_panic ... ok
[INFO] [stdout] test tts::tests::voice_for_lang_english ... ok
[INFO] [stdout] test tui::render::tests::wrapped_row_count_short_lines_one_row_each ... ok
[INFO] [stdout] test tui::render::tests::wrapped_row_count_sums_multi_span_width ... ok
[INFO] [stdout] test tui::space::tests::esc_exits_game ... ok
[INFO] [stdout] test tui::space::tests::movement_clamps_at_edges ... ok
[INFO] [stdout] test tui::space::tests::new_game_starts_with_invaders_alive ... ok
[INFO] [stdout] test tools::markets::tests::resolve_tv_symbol_commodity_aliases ... FAILED
[INFO] [stdout] test tools::markets::tests::resolve_tv_symbol_qualified_returns_as_is_on_failure ... FAILED
[INFO] [stdout] test tui::typewriter::tests::advance_handles_utf8_boundary ... ok
[INFO] [stdout] test tui::typewriter::tests::advance_reveals_content_incrementally ... ok
[INFO] [stdout] test tui::typewriter::tests::extract_returns_body_of_first_block ... ok
[INFO] [stdout] test tui::typewriter::tests::extract_returns_none_for_no_block ... ok
[INFO] [stdout] test tui::typewriter::tests::incomplete_block_returns_none ... ok
[INFO] [stdout] test tui_worker::tests::strip_ansi_passthrough_when_no_escapes ... ok
[INFO] [stdout] test tui_worker::tests::strip_ansi_preserves_newlines_and_emoji ... ok
[INFO] [stdout] test tui_worker::tests::strip_ansi_removes_csi_sgr ... ok
[INFO] [stdout] test usage::tests::computes_cost_summary_lines ... ok
[INFO] [stdout] test usage::tests::marks_unknown_model_pricing_as_fallback ... ok
[INFO] [stdout] test tools::shell::tests::bash_background_status_tail_round_trip ... ok
[INFO] [stdout] test usage::tests::reconstructs_usage_from_session_messages ... ok
[INFO] [stdout] test usage::tests::tracks_true_cumulative_usage ... ok
[INFO] [stdout] test voice::tests::transcribe_wav_fails_without_model ... ok
[INFO] [stdout] test voice::tests::ogg_to_wav_fails_gracefully_without_ffmpeg ... ok
[INFO] [stdout] test voice::tests::whisper_bin_honors_env_var ... ok
[INFO] [stdout] test tui::space::tests::q_exits_game ... ok
[INFO] [stdout] test tui::space::tests::shoot_spawns_bullet ... ok
[INFO] [stdout] test usage::tests::local_ollama_models_have_no_pricing ... ok
[INFO] [stdout] test voice::tests::whisper_model_path_is_under_claudette ... ok
[INFO] [stdout] test voice::tests::whisper_bin_defaults_to_whisper_cli ... ok
[INFO] [stdout] test tui::render::tests::wrapped_row_count_long_line_wraps_to_multiple_rows ... ok
[INFO] [stdout] test voice::tests::whisper_model_path_honors_env_var ... ok
[INFO] [stdout] test tools::clipboard::tests::clipboard_write_rejects_oversize ... ok
[INFO] [stdout] test tools::semantic::tests::end_to_end_finds_a_self_referential_token ... ok
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- tools::markets::tests::resolve_tv_symbol_commodity_aliases stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tools::markets::tests::resolve_tv_symbol_commodity_aliases' (3508) panicked at src/tools/markets.rs:283:23:
[INFO] [stdout] got: tv_scan: request failed: error sending request for url (https://scanner.tradingview.com/america/scan)
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x629d606c2088 - std[d054f6f42beb1baa]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x629d606c2088 - std[d054f6f42beb1baa]::backtrace_rs::backtrace::trace_unsynchronized::<std[d054f6f42beb1baa]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x629d606c2088 - std[d054f6f42beb1baa]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x629d606c2088 - <<std[d054f6f42beb1baa]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[5a1c3e9896636f3a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x629d606dc07a - <core[5a1c3e9896636f3a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x629d606dc07a - core[5a1c3e9896636f3a]::fmt::write
[INFO] [stdout]    6:     0x629d606c7bd2 - std[d054f6f42beb1baa]::io::default_write_fmt::<alloc[154f689e5dd3bae5]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/io/mod.rs:622:11
[INFO] [stdout]    7:     0x629d606c7bd2 - <alloc[154f689e5dd3bae5]::vec::Vec<u8> as std[d054f6f42beb1baa]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/io/mod.rs:1977:13
[INFO] [stdout]    8:     0x629d6069b886 - <std[d054f6f42beb1baa]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x629d6069b886 - std[d054f6f42beb1baa]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x629d606b8249 - std[d054f6f42beb1baa]::panicking::default_hook
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x629d603c5e1c - <alloc[154f689e5dd3bae5]::boxed::Box<dyn for<'a, 'b> core[5a1c3e9896636f3a]::ops::function::Fn<(&'a std[d054f6f42beb1baa]::panic::PanicHookInfo<'b>,), Output = ()> + core[5a1c3e9896636f3a]::marker::Send + core[5a1c3e9896636f3a]::marker::Sync> as core[5a1c3e9896636f3a]::ops::function::Fn<(&std[d054f6f42beb1baa]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   12:     0x629d603c5e1c - test[fad20673b750c10e]::test_main_inner::<test[fad20673b750c10e]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x629d606b84c2 - <alloc[154f689e5dd3bae5]::boxed::Box<dyn for<'a, 'b> core[5a1c3e9896636f3a]::ops::function::Fn<(&'a std[d054f6f42beb1baa]::panic::PanicHookInfo<'b>,), Output = ()> + core[5a1c3e9896636f3a]::marker::Send + core[5a1c3e9896636f3a]::marker::Sync> as core[5a1c3e9896636f3a]::ops::function::Fn<(&std[d054f6f42beb1baa]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   14:     0x629d606b84c2 - std[d054f6f42beb1baa]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x629d6069b942 - std[d054f6f42beb1baa]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x629d60692729 - std[d054f6f42beb1baa]::sys::backtrace::__rust_end_short_backtrace::<std[d054f6f42beb1baa]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x629d6069cd5d - __rustc[7ab284efd7f33ea8]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x629d606dc83c - core[5a1c3e9896636f3a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x629d5fc25560 - claudette[28aec47c9f81ccba]::tools::markets::tests::resolve_tv_symbol_commodity_aliases
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tools/markets.rs:283:23
[INFO] [stdout]   20:     0x629d5fbf7897 - claudette[28aec47c9f81ccba]::tools::markets::tests::resolve_tv_symbol_commodity_aliases::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tools/markets.rs:277:45
[INFO] [stdout]   21:     0x629d5f8e49f6 - <claudette[28aec47c9f81ccba]::tools::markets::tests::resolve_tv_symbol_commodity_aliases::{closure#0} as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x629d603b8efb - <fn() -> core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x629d603b8efb - test[fad20673b750c10e]::__rust_begin_short_backtrace::<core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>, fn() -> core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:724:18
[INFO] [stdout]   24:     0x629d603c6775 - test[fad20673b750c10e]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:747:74
[INFO] [stdout]   25:     0x629d603c6775 - <core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   26:     0x629d603c6775 - std[d054f6f42beb1baa]::panicking::catch_unwind::do_call::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}>, core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:581:40
[INFO] [stdout]   27:     0x629d603c6775 - std[d054f6f42beb1baa]::panicking::catch_unwind::<core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>, core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x629d603c6775 - std[d054f6f42beb1baa]::panic::catch_unwind::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}>, core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x629d603c6775 - test[fad20673b750c10e]::run_test_in_process
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:747:27
[INFO] [stdout]   30:     0x629d603c6775 - test[fad20673b750c10e]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:668:43
[INFO] [stdout]   31:     0x629d603c12d4 - test[fad20673b750c10e]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:698:41
[INFO] [stdout]   32:     0x629d603c12d4 - std[d054f6f42beb1baa]::sys::backtrace::__rust_begin_short_backtrace::<test[fad20673b750c10e]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x629d603c97f2 - std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked::<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   34:     0x629d603c97f2 - <core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   35:     0x629d603c97f2 - std[d054f6f42beb1baa]::panicking::catch_unwind::do_call::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:581:40
[INFO] [stdout]   36:     0x629d603c97f2 - std[d054f6f42beb1baa]::panicking::catch_unwind::<(), core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x629d603c97f2 - std[d054f6f42beb1baa]::panic::catch_unwind::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x629d603c97f2 - std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked::<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   39:     0x629d603c97f2 - <std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1} as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x629d606c0caf - <alloc[154f689e5dd3bae5]::boxed::Box<dyn core[5a1c3e9896636f3a]::ops::function::FnOnce<(), Output = ()> + core[5a1c3e9896636f3a]::marker::Send> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/alloc/src/boxed.rs:2277:9
[INFO] [stdout]   41:     0x629d606c0caf - <std[d054f6f42beb1baa]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   42:     0x75a710d0baa4 - <unknown>
[INFO] [stdout]   43:     0x75a710d98a64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] ---- tools::markets::tests::resolve_tv_symbol_qualified_returns_as_is_on_failure stdout ----
[INFO] [stdout] 
[INFO] [stdout] thread 'tools::markets::tests::resolve_tv_symbol_qualified_returns_as_is_on_failure' (3510) panicked at src/tools/markets.rs:258:9:
[INFO] [stdout] got: tv_scan: request failed: error sending request for url (https://scanner.tradingview.com/america/scan)
[INFO] [stdout] stack backtrace:
[INFO] [stdout]    0:     0x629d606c2088 - std[d054f6f42beb1baa]::backtrace_rs::backtrace::libunwind::trace
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
[INFO] [stdout]    1:     0x629d606c2088 - std[d054f6f42beb1baa]::backtrace_rs::backtrace::trace_unsynchronized::<std[d054f6f42beb1baa]::sys::backtrace::_print_fmt::{closure#1}>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
[INFO] [stdout]    2:     0x629d606c2088 - std[d054f6f42beb1baa]::sys::backtrace::_print_fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:74:9
[INFO] [stdout]    3:     0x629d606c2088 - <<std[d054f6f42beb1baa]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[5a1c3e9896636f3a]::fmt::Display>::fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:44:26
[INFO] [stdout]    4:     0x629d606dc07a - <core[5a1c3e9896636f3a]::fmt::rt::Argument>::fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/fmt/rt.rs:152:76
[INFO] [stdout]    5:     0x629d606dc07a - core[5a1c3e9896636f3a]::fmt::write
[INFO] [stdout]    6:     0x629d606c7bd2 - std[d054f6f42beb1baa]::io::default_write_fmt::<alloc[154f689e5dd3bae5]::vec::Vec<u8>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/io/mod.rs:622:11
[INFO] [stdout]    7:     0x629d606c7bd2 - <alloc[154f689e5dd3bae5]::vec::Vec<u8> as std[d054f6f42beb1baa]::io::Write>::write_fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/io/mod.rs:1977:13
[INFO] [stdout]    8:     0x629d6069b886 - <std[d054f6f42beb1baa]::sys::backtrace::BacktraceLock>::print
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:47:9
[INFO] [stdout]    9:     0x629d6069b886 - std[d054f6f42beb1baa]::panicking::default_hook::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:292:27
[INFO] [stdout]   10:     0x629d606b8249 - std[d054f6f42beb1baa]::panicking::default_hook
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:316:9
[INFO] [stdout]   11:     0x629d603c5e1c - <alloc[154f689e5dd3bae5]::boxed::Box<dyn for<'a, 'b> core[5a1c3e9896636f3a]::ops::function::Fn<(&'a std[d054f6f42beb1baa]::panic::PanicHookInfo<'b>,), Output = ()> + core[5a1c3e9896636f3a]::marker::Send + core[5a1c3e9896636f3a]::marker::Sync> as core[5a1c3e9896636f3a]::ops::function::Fn<(&std[d054f6f42beb1baa]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   12:     0x629d603c5e1c - test[fad20673b750c10e]::test_main_inner::<test[fad20673b750c10e]::test_main_static::{closure#0}>::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:155:21
[INFO] [stdout]   13:     0x629d606b84c2 - <alloc[154f689e5dd3bae5]::boxed::Box<dyn for<'a, 'b> core[5a1c3e9896636f3a]::ops::function::Fn<(&'a std[d054f6f42beb1baa]::panic::PanicHookInfo<'b>,), Output = ()> + core[5a1c3e9896636f3a]::marker::Send + core[5a1c3e9896636f3a]::marker::Sync> as core[5a1c3e9896636f3a]::ops::function::Fn<(&std[d054f6f42beb1baa]::panic::PanicHookInfo,)>>::call
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/alloc/src/boxed.rs:2291:9
[INFO] [stdout]   14:     0x629d606b84c2 - std[d054f6f42beb1baa]::panicking::panic_with_hook
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:833:13
[INFO] [stdout]   15:     0x629d6069b942 - std[d054f6f42beb1baa]::panicking::panic_handler::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:698:13
[INFO] [stdout]   16:     0x629d60692729 - std[d054f6f42beb1baa]::sys::backtrace::__rust_end_short_backtrace::<std[d054f6f42beb1baa]::panicking::panic_handler::{closure#0}, !>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:182:18
[INFO] [stdout]   17:     0x629d6069cd5d - __rustc[7ab284efd7f33ea8]::rust_begin_unwind
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:689:5
[INFO] [stdout]   18:     0x629d606dc83c - core[5a1c3e9896636f3a]::panicking::panic_fmt
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panicking.rs:80:14
[INFO] [stdout]   19:     0x629d5fc27093 - claudette[28aec47c9f81ccba]::tools::markets::tests::resolve_tv_symbol_qualified_returns_as_is_on_failure
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tools/markets.rs:258:9
[INFO] [stdout]   20:     0x629d5fbf7957 - claudette[28aec47c9f81ccba]::tools::markets::tests::resolve_tv_symbol_qualified_returns_as_is_on_failure::{closure#0}
[INFO] [stdout]                                at /opt/rustwide/workdir/src/tools/markets.rs:255:62
[INFO] [stdout]   21:     0x629d5f8e4af6 - <claudette[28aec47c9f81ccba]::tools::markets::tests::resolve_tv_symbol_qualified_returns_as_is_on_failure::{closure#0} as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   22:     0x629d603b8efb - <fn() -> core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   23:     0x629d603b8efb - test[fad20673b750c10e]::__rust_begin_short_backtrace::<core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>, fn() -> core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:724:18
[INFO] [stdout]   24:     0x629d603c6775 - test[fad20673b750c10e]::run_test_in_process::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:747:74
[INFO] [stdout]   25:     0x629d603c6775 - <core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   26:     0x629d603c6775 - std[d054f6f42beb1baa]::panicking::catch_unwind::do_call::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}>, core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:581:40
[INFO] [stdout]   27:     0x629d603c6775 - std[d054f6f42beb1baa]::panicking::catch_unwind::<core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>, core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:544:19
[INFO] [stdout]   28:     0x629d603c6775 - std[d054f6f42beb1baa]::panic::catch_unwind::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<test[fad20673b750c10e]::run_test_in_process::{closure#0}>, core[5a1c3e9896636f3a]::result::Result<(), alloc[154f689e5dd3bae5]::string::String>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panic.rs:359:14
[INFO] [stdout]   29:     0x629d603c6775 - test[fad20673b750c10e]::run_test_in_process
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:747:27
[INFO] [stdout]   30:     0x629d603c6775 - test[fad20673b750c10e]::run_test::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:668:43
[INFO] [stdout]   31:     0x629d603c12d4 - test[fad20673b750c10e]::run_test::{closure#1}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/test/src/lib.rs:698:41
[INFO] [stdout]   32:     0x629d603c12d4 - std[d054f6f42beb1baa]::sys::backtrace::__rust_begin_short_backtrace::<test[fad20673b750c10e]::run_test::{closure#1}, ()>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/backtrace.rs:166:18
[INFO] [stdout]   33:     0x629d603c97f2 - std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked::<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/thread/lifecycle.rs:70:13
[INFO] [stdout]   34:     0x629d603c97f2 - <core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/panic/unwind_safe.rs:275:9
[INFO] [stdout]   35:     0x629d603c97f2 - std[d054f6f42beb1baa]::panicking::catch_unwind::do_call::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:581:40
[INFO] [stdout]   36:     0x629d603c97f2 - std[d054f6f42beb1baa]::panicking::catch_unwind::<(), core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panicking.rs:544:19
[INFO] [stdout]   37:     0x629d603c97f2 - std[d054f6f42beb1baa]::panic::catch_unwind::<core[5a1c3e9896636f3a]::panic::unwind_safe::AssertUnwindSafe<std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}::{closure#0}>, ()>
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/panic.rs:359:14
[INFO] [stdout]   38:     0x629d603c97f2 - std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked::<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/thread/lifecycle.rs:68:26
[INFO] [stdout]   39:     0x629d603c97f2 - <std[d054f6f42beb1baa]::thread::lifecycle::spawn_unchecked<test[fad20673b750c10e]::run_test::{closure#1}, ()>::{closure#1} as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/core/src/ops/function.rs:250:5
[INFO] [stdout]   40:     0x629d606c0caf - <alloc[154f689e5dd3bae5]::boxed::Box<dyn core[5a1c3e9896636f3a]::ops::function::FnOnce<(), Output = ()> + core[5a1c3e9896636f3a]::marker::Send> as core[5a1c3e9896636f3a]::ops::function::FnOnce<()>>::call_once
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/alloc/src/boxed.rs:2277:9
[INFO] [stdout]   41:     0x629d606c0caf - <std[d054f6f42beb1baa]::sys::thread::unix::Thread>::new::thread_start
[INFO] [stdout]                                at /rustc/28f95933dc0727396c07b48d0a8cb5211b7fb472/library/std/src/sys/thread/unix.rs:118:17
[INFO] [stdout]   42:     0x75a710d0baa4 - <unknown>
[INFO] [stdout]   43:     0x75a710d98a64 - clone
[INFO] [stdout]   44:                0x0 - <unknown>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     tools::markets::tests::resolve_tv_symbol_commodity_aliases
[INFO] [stdout]     tools::markets::tests::resolve_tv_symbol_qualified_returns_as_is_on_failure
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 1009 passed; 2 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.93s
[INFO] [stdout] 
[INFO] [stderr] error: test failed, to rerun pass `--lib`
[INFO] running `Command { std: "docker" "inspect" "aa59e56f3fff8a886462f59b502e8ba1fe48258d639051cff29adb737e1d70c7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "aa59e56f3fff8a886462f59b502e8ba1fe48258d639051cff29adb737e1d70c7", kill_on_drop: false }`
[INFO] [stdout] aa59e56f3fff8a886462f59b502e8ba1fe48258d639051cff29adb737e1d70c7
